Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Reemplazar Un Texto Dentro De Un PDF [SOLUCIONADO]
Autor Mensaje
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 Miercoles, 08 Abril 2020, 00:27; editado 1 vez 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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, 12:18; editado 1 vez 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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"
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Línea De Texto Larga. SOLUCIONADO Shell General 11 Domingo, 11 Febrero 2018, 19:50 Ver último mensaje
jguardon
No hay nuevos mensajes Reemplazar Texto En Un PDF Usando .fodt jsbsan Aplicaciones/Fragmentos de Código 10 Jueves, 16 Abril 2020, 12:58 Ver último mensaje
portaro
No hay nuevos mensajes Como Se Hizo.... El Programa Buscar Y Reem... jsbsan Videotutoriales 2 Martes, 21 Abril 2020, 19:23 Ver último mensaje
jsbsan
No hay nuevos mensajes Coleccion Dentro De Un Formulario De Un Wo... tincho Proyecto gambasCAD 3 Viernes, 22 May 2020, 20:33 Ver último mensaje
tincho
 

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


 
Lista de permisos
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
No puede descargar archivos
No puede publicar eventos en el calendario