Найти и заменить гиперссылки в PDF-файле

Найти и заменить гиперссылки в PDF-файле

Я хочу автоматизировать процесс поиска и замены hrefs (не текста ссылок) в сотнях PDF-файлов в ОС Windows 8.1.

Я с радостью преобразую форматы файлов, если их можно перекомпилировать в рабочий PDF-файл.

ОБНОВЛЕНИЕ: Мне удалось найти и заменитьтолько hrefс использованием PDFTK..

  1. pdftk foo.pdf вывод foo.tmp распаковать
  2. найти и отредактировать ссылку с помощью текстового редактора
  3. pdftk foo.tmp вывод foo-updated.pdf сжатие

Теперь мне нужен инструмент cmdline, который может автоматизировать шаг 2, заменяя значения foo.tmp из списка поиска и замены.

решение1

Я предполагаю, что мы говорим об ОС Windows и сПартиятег вы будете ссылаться на пакетную обработку вместоПартияЯ, в любом случае, посоветую, чтоПартия— это ограниченный язык, который охватывает только основные общие системные задачи, он не предназначен для чтения файлов, отличных от простого текста, таких как PDF, он этого сделать не может.

Для чтения определенного формата, например PDF, необходим внешний парсер/интерпретатор.

Есть хорошийС#решение, которое демонстрирует, как читать данные, содержащиеся вPDFв понятном для человека виде:

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

Оно используетiTextSharpбиблиотека с открытым исходным кодом:

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

В качестве альтернативы, вотВБСрешение на основе руководства пользователя Adobe, ему необходимоКОМобъекты, установленные из приложения Adobe.

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

Связанный контент