在 PDF 中查找和替换超链接

在 PDF 中查找和替换超链接

我想自动执行在 Windows 8.1 操作系统中的数百个 PDF 文件中查找和替换 href(而不是锚文本)的过程。

我很乐意转换文件格式,只要它们可以重新编译为可用的 PDF。

更新:我已经能够找到并替换仅限 href使用 PDFTK..

  1. pdftk foo.pdf 输出 foo.tmp 解压缩
  2. 使用文本编辑器查找并编辑链接
  3. pdftk foo.tmp 输出 foo-updated.pdf 压缩

现在我需要一个 cmdline 工具,它可以通过从查找和替换列表中替换 foo.tmp 值来自动执行步骤 2。

答案1

我假设我们讨论的是 Windows 操作系统,您将参考批处理标签而不是lang,无论如何我建议是一种有限的语言,仅涵盖基本的常见系统任务,它不能读取非纯文本文件(如 PDF)。

要读取 PDF 等特定格式,需要外部解析器/解释器。

有一个很好的C#基于解决方案,演示如何读取包含在PDF以人类可读的方式:

https://stackoverflow.com/questions/2550796/reading-pdf-content-with-itextsharp-dll-in-vb-net-or-c-sharp

它用文本分析工具库,它是开源的:

http://sourceforge.net/projects/itextsharp/

或者,这是一个虚拟专用网络基于 Adob​​e 用户指南的解决方案,它需要串口从 Adob​​e 应用程序安装的对象。

http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/indesign/sdk/cs6/scripting/InDesign_ScriptingGuide_VB.pdf

请注意您对此任务感兴趣的章节:

在此处输入图片描述

为了在 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

相关内容