我想自动执行在 Windows 8.1 操作系统中的数百个 PDF 文件中查找和替换 href(而不是锚文本)的过程。
我很乐意转换文件格式,只要它们可以重新编译为可用的 PDF。
更新:我已经能够找到并替换仅限 href使用 PDFTK..
- pdftk foo.pdf 输出 foo.tmp 解压缩
- 使用文本编辑器查找并编辑链接
- pdftk foo.tmp 输出 foo-updated.pdf 压缩
现在我需要一个 cmdline 工具,它可以通过从查找和替换列表中替换 foo.tmp 值来自动执行步骤 2。
答案1
我假设我们讨论的是 Windows 操作系统,批您将参考批处理标签而不是批lang,无论如何我建议批是一种有限的语言,仅涵盖基本的常见系统任务,它不能读取非纯文本文件(如 PDF)。
要读取 PDF 等特定格式,需要外部解析器/解释器。
有一个很好的C#基于解决方案,演示如何读取包含在PDF以人类可读的方式:
它用文本分析工具库,它是开源的:
http://sourceforge.net/projects/itextsharp/
或者,这是一个虚拟专用网络基于 Adobe 用户指南的解决方案,它需要串口从 Adobe 应用程序安装的对象。
请注意您对此任务感兴趣的章节:
为了在 VBS 方面为您提供一些帮助,这里有一个 VBS 脚本问题可以帮助您:
Option Explicit
Dim accapp, acavdocu
Dim pdf_path, bReset, Wrd_count
pdf_path="C:\LS\Test\Invoices\02_2011_PDF\rpt_Invoice_1.pdf"
'AcroExch is acrobat application object
Set accapp=CreateObject("AcroExch.App")
accapp.Show()
'Need to create one AVDoc object par displayed document
Set acavdocu=CreateObject("AcroExch.AVDoc")
'Opening the PDF
If acavdocu.Open(pdf_path,"") Then
acavdocu.BringToFront()
bReset=1 : Wrd_count = 0
'Find Text Finds the specified text, scrolls so that it is visible, and highlights it
Do While acavdocu.FindText("Invoice#", 1, 1, bReset)
bReset=0 : Wrd_count=Wrd_count+1
'Wait 0, 200
Loop
End If
accapp.CloseAllDocs()
accapp.Exit()
msgbox "The word 'Invoice#' was found " & Wrd_count & "times"
Set accap=nothing : Set accapp=nothing
但我要说的是,显然它似乎没有按预期工作,我从这个网站获取了它:
http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_26834618.html