2

Я хочу автоматизировать процесс поиска и замены ссылок (не якорного текста) в сотнях файлов 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 ответ1

1

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

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

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

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

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

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

В качестве альтернативы приведено решение на основе VBS из руководства пользователя Adobe, для которого необходимо установить COM- объекты из приложения 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .