Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Duda] Leer y llenar archivos PDF (https://www.cobolforo.es/showthread.php?t=361)

lfortuny 6 de abril de 2016 12:35

Leer y llenar archivos PDF
 
Buenos días.

Busco información de como llenar y leer campos de archivos PDF desde el PowerCobol preferiblemente.

No encuentro información de como tratar con los campos de los archivos PDF, quizá tenga que recurrir a algún otro lenguaje o ActiveX o ¿?.

Agradezco de antemano cualquier información al respecto.

Saludos.

Kuk 6 de abril de 2016 15:31

lfortuny, échale un vistazo a esto a ver: Advance PDF Class Without Acrobat Reader by Faizi Baba (from psc cd)

No lo he probado, pero según parece es usando WinAPI. Si realmente es así, se puede hacer vía PowerCOBOL sin problemas.

lfortuny 6 de abril de 2016 18:43

Gracias.
No me sirve, esto es para crear archivos PDF. Lo que busco es la forma de cargar datos en un PDF y leerlos tras que el usuario haya llenado los que necesito.

Saludos

Kuk 15 de abril de 2016 15:35

lfortuny, he leído esto y me he dado cuenta que es verdad:

Cita:

I'm afraid this is a mission impossible.
A pdf can be stored in so many diffrent ways...
the most horrific version is a picture/scan containing the text information you want.
an optimzed pdf ussually contains text as three letter fragments instead of complete lines of text. (this is a way of compressing information by pointing to a letter combination like 'ing' instead of repeating the combination everywhere it occurs)

So distilling info from a pdf... don't.
use a diffrent format like XML, HTML, TXT, RTF, etc... as PDF is a closed format, and in later versions even has read/copy restrictions and security on the file.
Podrías a lo mejor barajar la opción de usar un OCX lctor de PDF, como el Foxit que he puesto en el foro, cargar el fichero, guardarlo como texto y buscar la información en el texto.

Otra opción bastante chunga sería utilizar un OCR, pero de los gratuitos no he visto ninguno bueno.

Si el fichero de origen es tuyo (aunque estoy casi seguro que no), como dice el texto citado, yo también te aconsejo cambiar de formato.

Begoguay 23 de abril de 2016 17:15

Hola amigos.

Yo necesitaría abrir un archivo PDF desde un programa PWC-9. Y además, saber si habría alguna forma de ir a una página concreta de ese PDF.

Un saludo

Kuk 23 de abril de 2016 18:58

Begoguay, has probado con este? [Aporte] FoxitReader - COBOL Foro

Begoguay 24 de abril de 2016 11:29

Hola.

Yo queria hacerlo ejecutando una linea de comando y ejecutarlo con 'ExecuteSync', no usando un ocx.

No se si se podra hacer.....:confused::confused::confused:

Josber 24 de abril de 2016 12:56

Cita:

Citación del post de Begoguay (Mensaje 1856)
Hola.

Yo queria hacerlo ejecutando una linea de comando y ejecutarlo con 'ExecuteSync', no usando un ocx.

No se si se podra hacer.....:confused::confused::confused:

Yo creo que con ...

Código COBOL:
  1. MOVE SPACES TO WTEX.
  2. STRING "Start "
  3.            Nombre_Fichero.PDF
  4.            DELIMITED BY SIZE INTO WTEX
  5. END-STRING.
  6. INVOKE POW-SELF "ExecuteSync" USING WTEX.

Te abrirá el archivo pdf con el programa que tenga asociado en Windows. Recuerda que Nombre_Fichero.PDF, tiene que tener la extensión incluida y correcta, (en éste caso .PDF) para que funcione, o te dará error, además con ésto puedes abrir cualquier archivo, siempre que tenga su programa asociado en Windows.

Ya nos comentas si te funcina.

Un saludo

Begoguay 24 de abril de 2016 16:12

Cita:

Citación del post de Josber (Mensaje 1859)
Yo creo que con ...

Código COBOL:
  1. MOVE SPACES TO WTEX.
  2. STRING "Start "
  3.            Nombre_Fichero.PDF
  4.            DELIMITED BY SIZE INTO WTEX
  5. END-STRING.
  6. INVOKE POW-SELF "ExecuteSync" USING WTEX.

Te abrirá el archivo pdf con el programa que tenga asociado en Windows. Recuerda que Nombre_Fichero.PDF, tiene que tener la extensión incluida y correcta, (en éste caso .PDF) para que funcione, o te dará error, además con ésto puedes abrir cualquier archivo, siempre que tenga su programa asociado en Windows.

Ya nos comentas si te funcina.

Un saludo

Hola.

He hecho un programa pequeño que pulsando un botón se ejecuta lo siguiente:

Código COBOL:
  1.         MOVE SPACES TO COMANDO
  2.         MOVE "START C:\guia.pdf" TO COMANDO
  3.         INVOKE POW-SELF "ExecuteSync" USING COMANDO
  4.         INVOKE BT-SALIR "SetFocus"
Pues lo he probado y me da error: Invalid calling of method, setting or getting the property

Kuk 24 de abril de 2016 16:14

Begoguay, ExecuteSync bloquea el Form desde el que se ha lanzado hasta que el programa llamado no sea cerrado. Así que el SetFocus lo tienes que hacer antes.

Puedes hacer lo siguiente, para que no se abra la ventana de DOS:

Código COBOL:
  1.  INVOKE BT-SALIR "SetFocus"
  2.  INVOKE POW-SELF "ExecuteSync" USING 'rundll32 url.dll,FileProtocolHandler "C:\guia.pdf"'

Begoguay 24 de abril de 2016 16:32

Hola Kuk.

Me funciona:yupi::yupi::yupi::yupi:

Y para rematar, de momento, :verg:, sabrías como ir a una pagina del documento?

Un saludo.

Josber 24 de abril de 2016 16:51

La diferencia entre Execute y Executesunc, es que el primero no bloquea el Form hasta que hayas cerrado el pdf y el segundo sí, prueba los 2 y quédate con el que te interesa.

En cuanto a poder ir a una página en concreto, creo que desde la línea de comandos, te va a ser imposible.

Un saludo.-

Kuk 24 de abril de 2016 19:36

Begoguay, este comando le dice al SO que abra el documento con el programa por defecto. Si quieres indicar la página u otras opciones, ya hay que orientarse a un programa en concreto (Acrobat, Foxit) y ejecutar comandos específicos. Habría que anteriormente determinar cual es el que está instalado.


La franja horaria es GMT +2. Ahora son las 15:21.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.