Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO]

Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO]
Artículo
Responder citando    Descargar mensaje  
Mensaje 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 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Martes, 07 Abril 2020, 03:52 ]
 


Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO]
Comentarios
Responder citando    Descargar mensaje  
Mensaje 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



 
tercoIDE - Ver perfil del usuario Enviar mensaje privado  
tercoIDE [ Martes, 07 Abril 2020, 21:48 ]
Responder citando    Descargar mensaje  
Mensaje 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.



 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Martes, 07 Abril 2020, 23:23 ]
Responder citando    Descargar mensaje  
Mensaje 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 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Martes, 07 Abril 2020, 23:27 ]
Responder citando    Descargar mensaje  
Mensaje Re: Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO] 
 
Me parece que a mi no funciona.  



 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Miercoles, 08 Abril 2020, 07:55 ]
Responder citando    Descargar mensaje  
Mensaje 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.



 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Miercoles, 08 Abril 2020, 11:21 ]
Responder citando    Descargar mensaje  
Mensaje 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.



 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Miercoles, 08 Abril 2020, 11:28 ]
Responder citando    Descargar mensaje  
Mensaje 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




 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Lunes, 13 Abril 2020, 13:40 ]
Responder citando    Descargar mensaje  
Mensaje 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.



 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Lunes, 13 Abril 2020, 17:42 ]
Responder citando    Descargar mensaje  
Mensaje Re: Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO] 
 
A mi la solución de tincho de todos modos sigue no funcionando.  



 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Lunes, 13 Abril 2020, 18:11 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 



 

cron