Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO]


Ir a la página 1, 2  Siguiente

Objetivo: Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO]
Hola a todos.
Alguien sabe como reemplazar un texto dentro de un PDF por otro.
Estoy usando algo así:
xpdf = New PdfDocument(f)
xpdf.Open(f)
If xpdf[2].Find("textoareemplazar") = True Then
' Bueno el caso es que encuentra que en una pagina determinada existe ese texto pero ¿como lo reemplazo?
Next
Endif

Saludos

última edición por tincho el Martes, 07 Abril 2020, 23:27; editado 1 vez
Perfil MP  
Objetivo: Re: Reemplazar Un Texto Dentro De Un PDF
hasta donde yo se, los PDF estan hechos para que solo se puedan leer...

porque algunos contienen imagenes de texto, no texto, o una combinacion de ambas cosas

o sea, no tengo la mas palida idea de como hacerlo

Perfil MP  
Objetivo: Re: Reemplazar Un Texto Dentro De Un PDF
tercoIDE escribió:  
hasta donde yo se, los PDF estan hechos para que solo se puedan leer...
porque algunos contienen imagenes de texto, no texto, o una combinacion de ambas cosas
o sea, no tengo la mas palida idea de como hacerlo

Si la idea de los pdf es que sean solo lectura, pero si son PDF "texto" se pueden "hackear"
Saludos.

Perfil MP  
Objetivo: Re: Reemplazar Un Texto Dentro De Un PDF
Ok, encontré una forma, no gambosa, de hacerlo. Para ello uso el programa de la Shell sed
Pero el archivo debe estar "descomprimido" y para ello hay que usar otro programa Shell llamado qpdf
Dejo las dos funciones aquí
Para reemplazar el texto
[code linenumbers=false syntax=gambas]
'' Esta función trabaja con el programa de terminal sed y lo que hace es reempl
'' azar, en un archivo el texto buscado por su reemplazo.
'' Luego devuelve la ruta del archivo alterado.
'' Nota: El archivo PDF debe estar sin comprimir.

Paso 1 Desencriptar
'' Funcion que utiliza el programa gostscript de la terminal shell.
'' Desencripta el PDF que del que se pasa su rura como parámetro y luego si tod
'' do fu e correcto, devuelve la ruta del nuevo archivo desencriptado.

Public Function PDFDecrypt(strPath As String) As String

Dim strName As String
Dim strCommand As String
Dim prsCommand As Process

strName = File.Dir(strPath) &/ File.BaseName(strPath) & "-dcr.pdf"
strCommand = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile='"
strCommand &= strName & "' -c .setpdfwrite -f '" & strPath & "'"
prsCommand = Shell strCommand
While prsCommand.State = prsCommand.Running
Wait 0.05
Wend
If Exist(strName) Then
If Stat(strName).Type = gb.File Then
Return strName
Else
Return "0"
Endif
Endif
End


Paso 2 - Descomprimir
'' Esta función trabaja con el programa de terminal qpdf y luego de crear el ar
'' chivo pdf descompriomido devuelve la ruta de este.

Public Function PDFDecompress(inp As String) As String

Dim out As String
Dim com As String

out = File.Dir(inp) &/ File.BaseName(inp) & "-unc.pdf"
com = "qpdf --stream-data=uncompress '"
com &= inp & "' '" & out & "'"

Shell com Wait

If Exist(out) Then

If Stat(out).Type = gb.File Then
Return out
Else
Return ""
Endif
Endif

End


Paso 3 - Reemplazar el texto
Public Function PDFReplace(inp As String, s As String, r As String) As String

Dim out As String
Dim com As String

out = File.Dir(inp) &/ File.BaseName(inp) & "-rep.pdf"

com = "sed -e \"s/"
com &= s & "/"
com &= r & "/g\" <'"
com &= inp & "' >'" & out & "'"
Print com

Shell com Wait

If Exist(out) Then
If Stat(out).Type = gb.File Then
Return out
Else
Return ""
Endif
Endif

End


Saludos.

última edición por tincho el Miercoles, 08 Abril 2020, 11:18; editado 1 vez
Perfil MP  
Objetivo: Re: Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO]
Me parece que a mi no funciona.

Perfil MP  
Objetivo: Re: Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO]
vuott escribió:  
Me parece que a mi no funciona.

Vuott, agregue una nueva función al principio, que es para desencriptar PDF y ordene los pasos en el mismo sentido que lo use yo (funciono en mi caso).
Nota: El PDF debe ser "texto" no imagen.
Si sigue sin funcionar seguimos depurando ya que no he encontrado todavía un caso en que no funcione.
Saludos.

Perfil MP  
Objetivo: Re: Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO]
Yo he probado con el siguiente PDF - Introducing-Go.pdf
Si sigue sin funcionar y es posible transmitan el link del pdf que no lo hace o una descripción del método de generación de dicho documento, es decir si proviene de libreoffice u otro programa.
Saludos.

Perfil MP  
Objetivo: Re: Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO]
Tincho:

No lo consigo que funcione...
Te adjunto un fichero .pdf generado con el programa PRESTO.
Si este .pdf lo abro con LibreOffice y lo guardo como .pdf, tampoco funciona.

Nota:
Por ejemplo, lo que intento cambiar es la fecha, donde ponga "12 de abril" que ponga "13 de mayol"


Ejemplo.pdf
Descripción:  
Descargar
Nombre del archivo: Ejemplo.pdf
Tamaño: 216.49 KB
Descargado: 87 veces
Ejemplo.pdf
Descripción:  
Descargar
Nombre del archivo: Ejemplo.pdf
Tamaño: 216.49 KB
Descargado: 87 veces
Ejemplo.pdf
Descripción:  
Descargar
Nombre del archivo: Ejemplo.pdf
Tamaño: 216.49 KB
Descargado: 87 veces

Objetivo: Re: Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO]
jsbsan escribió:  
Tincho:

No lo consigo que funcione...
Te adjunto un fichero .pdf generado con el programa PRESTO.
Si este .pdf lo abro con LibreOffice y lo guardo como .pdf, tampoco funciona.

Nota:
Por ejemplo, lo que intento cambiar es la fecha, donde ponga "12 de abril" que ponga "13 de mayol"

ok, lo pruebo y te comento.
Saludos.

Perfil MP  
Objetivo: Re: Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO]
A mi la solución de tincho de todos modos sigue no funcionando.

Perfil MP  
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.5663s (PHP: -73% SQL: 173%)
Consultas SQL: 52 - Debug off - GZIP Activado