Buscar y reemplazar hipervínculos en un PDF

Buscar y reemplazar hipervínculos en un PDF

Quiero automatizar el proceso de buscar y reemplazar hrefs (no el texto de anclaje) en cientos de archivos PDF en un sistema operativo Windows 8.1.

Estoy feliz de convertir formatos de archivos siempre que puedan volver a compilarse como un PDF funcional.

ACTUALIZACIÓN: he podido encontrar y reemplazarsolo el hrefusando PDFTK..

  1. pdftk foo.pdf salida foo.tmp descomprimir
  2. buscar y editar un enlace usando un editor de texto
  3. pdftk foo.tmp salida foo-updated.pdf comprimir

Ahora necesito una herramienta cmdline que pueda automatizar el paso 2 reemplazando los valores de foo.tmp de una lista de búsqueda y reemplazo.

Respuesta1

Asumiré que estamos hablando del sistema operativo Windows y conLoteetiqueta, se referirá al procesamiento por lotes en lugar deLotelang, de todos modos te lo avisaréLotees un lenguaje limitado que solo cubre tareas básicas comunes basadas en el sistema, no está diseñado para leer un archivo de texto que no sea sin formato, como un PDF, no puede hacerlo.

Para leer un formato específico como un PDF, se necesita un analizador/intérprete externo.

hay una buenaC#solución basada en que demuestra cómo leer los datos contenidos en unPDFde forma legible por humanos:

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

UsaiTextSharpbiblioteca, que es de código abierto:

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

Alternativamente, aquí hay unEBVsolución basada en la guía del usuario de Adobe, necesita laCOMObjetos instalados desde la aplicación Adobe.

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

Anota los capítulos en los que estás interesado para esta tarea:

ingrese la descripción de la imagen aquí

Para ayudarle un poco en VBS, aquí hay una pregunta sobre el script de VBS que podría ayudarle:

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

Pero te avisaré que aparentemente no funciona como se esperaba, lo tomé de este sitio:

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

información relacionada