Encontre e substitua hiperlinks em um PDF

Encontre e substitua hiperlinks em um PDF

Quero automatizar o processo de localização e substituição de hrefs (não o texto âncora) em centenas de arquivos PDF em um sistema operacional Windows 8.1.

Fico feliz em converter formatos de arquivo, desde que possam ser recompilados como um PDF funcional.

ATUALIZAÇÃO: consegui encontrar e substituirapenas o hrefusando PDFTK..

  1. pdftk foo.pdf saída foo.tmp descompactar
  2. encontre e edite um link usando um editor de texto
  3. pdftk foo.tmp saída foo-updated.pdf compactar

Agora preciso de uma ferramenta cmdline que possa automatizar a etapa 2, substituindo os valores foo.tmp de uma lista de localização e substituição.

Responder1

Presumo que estamos falando sobre o sistema operacional Windows e comLotetag você se referirá ao processamento em lote em vez deLotelang, de qualquer forma, vou aconselhar issoLoteé uma linguagem limitada que cobre apenas tarefas básicas comuns baseadas no sistema; não se destina à leitura de um arquivo de texto que não seja simples, como um PDF, não pode.

Para ler um formato específico como um PDF, é necessário um analisador/interpretador externo.

Há um bomC#solução baseada que demonstra como ler os dados contidos em umPDFde uma forma legível por humanos:

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

Ele usaiTextSharpbiblioteca, que é de código aberto:

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

Alternativamente, aqui está umEBFsolução baseada no guia do usuário da Adobe, ela precisa doCOMobjetos instalados do aplicativo Adobe.

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

Observe os capítulos onde você está interessado nesta tarefa:

insira a descrição da imagem aqui

Para ajudá-lo um pouco em VBS, aqui está uma pergunta sobre script VBS que pode ajudá-lo:

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

Mas aconselho que aparentemente parece não funcionar como esperado, tirei deste site:

http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_26834618.html

informação relacionada