VBS使用单个间距查找/替换双段间距

时间:2017-04-12 23:14:58

标签: pdf vbscript

我不确定如何发布"问题"我找到了答案,但认为可能值得分享我的解决方案,以节省其他人花时间来弄清楚如何做到这一点。

基本上,我有一个PDF(有很多页面/格式),我想要删除文本,并粘贴到其他东西。但是,简单的复制/粘贴仍然会在其列中留下文本并自动插入段落空格,然后您需要按unsigned int,然后无限重复序列。嗯,这就是编程的目的 - 为你做重复的任务,所以你不必这样做。

我的回答发布在下面。 如果有人有更好的解决方案,请告诉我们!

1 个答案:

答案 0 :(得分:0)

下面我粘贴了我生成的vbscript中的代码。您仍然需要返回文本文件并修复一些内容。运行不遵循您编程的标准模板的脚本后的碎片。

另外,我注意到我使用notepad ++来确定Adobe阅读器如何(在Windows中)处理回车与换行(因为今天的区别相当模糊)。我参考this文章和AAT的答案,这有助于我理解差异。当专门引用vbs时,接受的答案很有用。

REM Set constants, then open file and copy into a buffer (contents)
Const ForReading = 1, ForWriting = 2
Dim fs, txt, contents

Set fs = CreateObject("Scripting.FileSystemObject")
Set txt = fs.OpenTextFile("originalTextFile.txt", ForReading)
contents = txt.ReadAll
txt.Close

REM Replace a double carriage return with un-repeatable text that as placeholder
contents = Replace(contents, vbCrLf & vbCrLf, "$%^&")

REM then replace leftover carriage returns with blank, 
contents = Replace(contents, vbCrLf, "")
contents = Replace(contents, vbCrLf, "")

REM finally, restore original carriage returns for paragraph spacing
contents = Replace(contents, "$%^&", vbCrLf & vbCrLf)
contents = Replace(contents, "$%^&", vbCrLf & vbCrLf)

REM Write to file
Set txt = fs.OpenTextFile("textFileRemovedSpaces.txt", ForWriting)
txt.Write contents
txt.Close

MsgBox("Done!")

步骤1:将pdf保存为文本文件 - 这将删除图片/等。使用Adobe Reader,执行文件 - >另存为 - >文本。

步骤2:将上方保存为Something.vbs,并根据需要在脚本中编辑文件名。确保还为脚本创建空文本文件以保存已编辑的文本。注意在vbs中,文本" REM"表示评论如下。

第3步:运行脚本。

第4步:获利!

我发现这很有用,因为它在很大程度上节省了编辑我需要转换为word文档的300页pdf的大量工作。

同样,如果有人有更好的解决方案,请告诉我们!