FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour PDF generado desde programa en FiveWin
Posts: 185
Joined: Thu Nov 17, 2005 12:48 AM
PDF generado desde programa en FiveWin
Posted: Sat Nov 20, 2010 03:55 AM

Estimados,

Tengo que implementar un programa que genere internamente liquidaciones de sueldo en PDF, cada una con su respectivo nombre sin usar utilitarios como PDFCreator, sino directamente desde el programa en FiveWin.

de antemano gracias por sus comentarios

Luis Alfonso Fuentes Guerrero

FWH 11.06 xHarbour 1.2.1 BCC55 WorkShop
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: PDF generado desde programa en FiveWin
Posted: Sat Nov 20, 2010 10:45 AM

Puedes utilizar pdftk.exe para tal fín. Aquí tienes más información : http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/

Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: PDF generado desde programa en FiveWin
Posted: Sat Nov 20, 2010 11:34 AM

Manuel,

creo que el compañero quiere hacer pdfs, no manipularlos, y segun entiendo pdftk solo vale para manipularlos, no para crearlos.

lafug,

¿Como te llamas? Sería bueno saber tu nombre para poder dirigirme a tí de manera apropiada.

Creo que deberías usar PdfCreator. Hay formas de controlarlo (lee los manuales) de forma tal de hacer lo que quieres. Además de ser uno de los libres y gratuitos, es uno de los que mejor código genera. En el trabajo compramos image2pdf pero no nos ha dado buen resultado, los pdfs no muestran correctamente el tamaño de las fuentes (problema reconocido por el autor) y la única forma es que generes los documentos como imágenes, con lo que los pdfs son muy grandes.

Lee la documentación de PdfCreator, es fácil controlarlo via el fichero ini.

Un saludo

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: PDF generado desde programa en FiveWin (Editado)
Posted: Sat Nov 20, 2010 06:30 PM
Hola Carlos:

Sí, es cierto, con pdftk no se pueden crear pdf,s pero, si no he entedido mal, lo que quiere Luis Alfonso es generar distintos ficheros pdf con la misma plantilla o modelo y diferentes datos. Eso se puede hacer perfectamente con pdftk. Tienes un fichero nomina.pdf y un fichero datos.xml que vas a fusionar para generar un nuevo fichero empleadoxxx.pdf. Algo tan sencillo como esto:

Code (fw): Select all Collapse
  cSalida:="empleado"+cNombre+".pdf"
  //
  WaitRun("pdftk.exe nomina.pdf fill_form datos.xml output "+ cSalida,0 )
  
 // Si queremos ver el resultado
  ShellExecute( ,"open", cSalida,,,1 )


Por cierto, fuiste tú quien, en su día, me puso sobre la pista de pdftk.

Luis Alfonso, necesitas :
1º Previamente manipular tu fichero PDF con un editor de ficheros PDF para conocer/modificar el nombre de los distintos campos.
2º Crear un fichero XML que contenga los valores de los campos del PDF

En este enlace te he puesto un ejemplo de ambos ficheros: http://rapidshare.com/files/432112051/Ejemplo.rar
Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 185
Joined: Thu Nov 17, 2005 12:48 AM
Re: PDF generado desde programa en FiveWin
Posted: Sun Nov 21, 2010 12:47 AM

GRacias Por sus comentarios,
Investigaré vuetras sugerencias

saludos
Luis Fuentes

Luis Alfonso Fuentes Guerrero

FWH 11.06 xHarbour 1.2.1 BCC55 WorkShop
Posts: 234
Joined: Tue Sep 01, 2009 07:55 AM
Re: PDF generado desde programa en FiveWin
Posted: Sun Nov 21, 2010 05:03 PM
Hola:
Yo utilizo la clase tprinter de fivewin, haciendo un pequeño enredo:
Code (fw): Select all Collapse
    PRINTER oPrn DOC "INFORME" preview
    DEFINE FONT oFont NAME "Arial" SIZE 0,-14 BOLD OF oPrn
    DEFINE FONT oFont1 NAME "Arial" SIZE 0,-10 OF oPrn
        define font ofont3 name "Arial" SIZE 0,-6 of oprn
        DEFINE PEN oPen WIDTH 3 of oprn
          oprn:setpage(9)
            PAGE
                oPrn:ImportWMF( ruta3+"folio.wmf",.f. )
                                                // lo que quiero imprimir
        ENDPAGE
              if !nconvert("-o c:\temp\"+fnombre+" -quiet -out pdf -c 5 "+oPrn:aMeta[1])
              msginfo("error sin convertir")
              endif
                      ferase(oPrn:aMeta[1])         //borro el metafile
                      oprn:end()       //aqui termino el objeto printer, para que no salga el preview
                      oprn:=nil
    oFont:End()
    ofont1:end()
        open:end()

Ahora según el ejemplo tendríamos en "C:\Temp" el documento "fnombre".pdf.
Un saludo
José Luis
Posts: 408
Joined: Fri Jan 29, 2010 08:14 PM
Re: PDF generado desde programa en FiveWin
Posted: Thu Nov 25, 2010 11:40 PM

Hola Jose Luis:

De donde has obtenido la funcion nConvert() ?

un saludo
JLL

Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Posts: 366
Joined: Wed Aug 30, 2006 05:25 PM
Re: PDF generado desde programa en FiveWin
Posted: Fri Nov 26, 2010 03:08 PM

JLL: nConvert es parte de xnView.
Aqui lo encuentras.

http://www.xnview.com/en/index.html

Saludos

Gracias y Saludos

Ruben Fernandez - Uruguay

FWH 11.06, Harbour, Borland 5.82
Posts: 337
Joined: Fri Oct 07, 2005 02:44 PM
Re: PDF generado desde programa en FiveWin
Posted: Fri Nov 26, 2010 03:21 PM

Hola a Todos,

Nada mas para decir que ojo con la licencia de nconvert que no es free para uso comercial segun recuerdo.

atte.,

Lautaro Moreira

Hola,

Soy un Contador que por necesidad aprendio a programar y se quedo programando.
Posts: 234
Joined: Tue Sep 01, 2009 07:55 AM
Re: PDF generado desde programa en FiveWin
Posted: Mon Nov 29, 2010 07:14 AM
Hola, perdona la tardanza, pero he estado ausente unos dias la funcion nconvert:
Code (fw): Select all Collapse
static function nconvert(cadena)
local ruta:="donde ubico el ejecutable nconvert.exe"
if file(ruta+"nconvert.exe")
   ruta:=ruta+"nconvert.exe"
else
   return .f.
endif
MsgRun( "Espere....", "Procesado fichero" , { || waitrun(ruta+" "+cadena,0) } )
return .t.

En cuanto al ejecutable nconvert.exe, ya te han indicado unos post más arriba donde conseguirlo.
Un saludo
Posts: 3
Joined: Fri May 13, 2011 08:44 AM
Re: PDF generado desde programa en FiveWin
Posted: Fri May 13, 2011 08:50 AM

Hola estoy usando tu ejemplo de nconvert. Lo que ocurre es que al usar oPrn:end() me cierra la ventana pero me devuelve un error.
Podiras echarme una mano.
Este el codigo que estoy usando

If cPdf

    WaitRun ("NCONVE32.EXE -quiet -out pdf -c 5 "+oPrn:aMeta[1] )

    If File(oPrn:aMeta[1])
        oPrn:End() ** En esta linea es donde me devuelve el error indicandome que no existe "lMeta"
    End

*? SendMessage( FindWindow( 0, "HOLA"), WM_CLOSE ) ** he intentado cerrar la pantalla de previsualizacion con esta linea
** pero me devuelve al entrar por segunda vez que ya esta abierta
End
ENDPRINT

Podriais ayudarme ?

Gracias

Posts: 230
Joined: Thu Sep 17, 2015 11:40 PM
Re: PDF generado desde programa en FiveWin (Editado)
Posted: Wed Jan 13, 2021 03:37 AM
Manuel Aranda wrote:Hola Carlos:

Sí, es cierto, con pdftk no se pueden crear pdf,s pero, si no he entedido mal, lo que quiere Luis Alfonso es generar distintos ficheros pdf con la misma plantilla o modelo y diferentes datos. Eso se puede hacer perfectamente con pdftk. Tienes un fichero nomina.pdf y un fichero datos.xml que vas a fusionar para generar un nuevo fichero empleadoxxx.pdf. Algo tan sencillo como esto:

Code (fw): Select all Collapse
  cSalida:="empleado"+cNombre+".pdf"
  //
  WaitRun("pdftk.exe nomina.pdf fill_form datos.xml output "+ cSalida,0 )
  
 // Si queremos ver el resultado
  ShellExecute( ,"open", cSalida,,,1 )


Por cierto, fuiste tú quien, en su día, me puso sobre la pista de pdftk.

Luis Alfonso, necesitas :
1º Previamente manipular tu fichero PDF con un editor de ficheros PDF para conocer/modificar el nombre de los distintos campos.
2º Crear un fichero XML que contenga los valores de los campos del PDF

En este enlace te he puesto un ejemplo de ambos ficheros: http://rapidshare.com/files/432112051/Ejemplo.rar




Hola estoy necesitando llenar datos en un pdf me podrias facilitar el archivo ejemplo por favor
Carlos Atuncar - CaSoftSystem
Chincha - Perú
+51983478218
carlosalbatun@gmail.com
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: PDF generado desde programa en FiveWin
Posted: Wed Jan 13, 2021 05:31 AM
lafug wrote:Estimados,

Tengo que implementar un programa que genere internamente liquidaciones de sueldo en PDF, cada una con su respectivo nombre sin usar utilitarios como PDFCreator, sino directamente desde el programa en FiveWin.

de antemano gracias por sus comentarios


Code (fw): Select all Collapse
PRINT oPrn FILE "filename.pdf"
PAGE
// your print statements to print
ENDPAGE
ENDPRINT

This will create a new file "filename.pdf" silently, instead of printing to a printer.
I assume that you are not using a very very old version of FWH.

Please let us know if you need any further clarifications.
Regards



G. N. Rao.

Hyderabad, India
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: PDF generado desde programa en FiveWin (Editado)
Posted: Mon Feb 01, 2021 04:51 PM
CARLOS ATUNCAR wrote:
Hola estoy necesitando llenar datos en un pdf me podrias facilitar el archivo ejemplo por favor

Hola Carlos!
Lo siento, no tengo nada ahora a mano, pero el pdftk tiene un help embebido, y tiene un comando para sacar la plantilla que usas para rellenar el pdf.

Esta pagina tiene todo lo que trae el pdftk, y el comando que necesitas es generate_fdf, que te genera la plantilla donde vas a cargar tus datos, luego usas el comando fill_form para rellenar el pdf con los datos que metiste. tiene una opción flatten que sirve para que quite los "gets" de los campos y deje solo el texto.

Espero que lo puedas hacer funciona.

Abrazo
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 652
Joined: Wed Oct 19, 2005 12:03 PM
Re: PDF generado desde programa en FiveWin
Posted: Wed Feb 03, 2021 09:01 AM
Hola no sé si es lo que necesitas, pero uso el CutePDF Writer, haces el listado que quieres y lo imprimes por ahí

Hay librerías para hacer pdf, yo uso la clase tpdf desde hace años, en los casos que tengo que generarlo y enviarlos por correo.
Creo que con versiones nuevas de fivewin se hace automáticamente.

Un caso de crear un pdf sin pasar por la impresora del CutePDF Writer
Code (fw): Select all Collapse
  
try
   opdf := tpdf():new( cPath )

   titpdef( oPdf )                    // creopdf están los titulos



   oPdf:Pdfatsay( "CUIT 30-65485547-8",cm2dpi( 2.4 ), 100, .T. )
   oPdf:Pdfatsay( ( "Agente de Retención: " + oApp:nroBruto ), cm2dpi( 2.4 ), 350, .T. )

   oPdf:Pdfsetfont( "COURIER", NORMAL, 10 )
   oPdf:Pdfatsay( "Retención de Ingresos Brutos", cm2dpi( nrow += .8 ), cmancho( 8 ) )
   oPdf:Pdfatsay( cTitulo, cm2dpi( nrow += .5 ), cmancho( 8.4 ) )
   oPdf:Pdfatsay( "Fecha: " + DToC( oVar:dfecha ), cm2dpi( nrow += .7 ), cmancho( 1.5 ) )
   oPdf:Pdfatsay( "Constancia N° " + valstr( nComproba ), cm2dpi( nrow += .5 ), cmancho( 1.5 ) )
   oPdf:Pdfatsay( ( "Rentenido a: " + aMae[ 2 ] ), cm2dpi( nrow += .5 ), cmancho( 1.5 ) )
   oPdf:Pdfatsay( ( "CUIT " + aMae[ 7 ] ), cm2dpi( nrow += .5 ), cmancho( 1.5 ) )
   oPdf:Pdfatsay( ( "Domicilio: " + AllTrim(aMae[ 3 ] ) + Space(2 ) + AllTrim(aMae[ 4 ] ) ), cm2dpi( nrow += .5 ), cmancho( 1.5 ) )
   oPdf:Pdfatsay( aMae[ 5 ], cm2dpi( nrow += .5 ), cmancho( 1.5 ) )
   oPdf:Pdfatsay( ( "Número de IIBB: " + aMae[ 17 ] ), cm2dpi( nrow += .5 ), cmancho( 1.5 ) )
   oPdf:Pdfatsay( "Pago efectuado: $" + Transform( oVar:totalre,"@e 99,999,999.99" ), cm2dpi( nrow += .5 ), cmancho( 1.5 ) )
   oPdf:Pdfatsay( "Importe retenido: $" + Transform( iif(lPcia,oVar:nRetib,oVar:nRetibcap ),"@e 999,999,999.99" ), cm2dpi( nrow += .5 ), cmancho( 1.5 ) )
   oPdf:Pdfatsay( "Alícuota aplicada: %" + iif( lPcia,Transform(oVar:nPorIB, "@e 99.99" ),Transform(oVar:Ibrecap, "@e 99.99" ) ), cm2dpi( nrow += .5 ), cmancho( 1.5 ) )


   FOR x = 1 TO Len( oVar:adeta )
      IF oVar:adeta[ x, 5 ] >= oApp:minibru
         oPdf:Pdfatsay( ( "Afecta a comprobante Nº " + oVar:adeta[ x,2 ] + " Base Imp. " + Transform(oVar:adeta[ x,5 ],"@e 999,999,999.99" ) ), cm2dpi( nrow += .5 ), cmancho( 1.5 ) )
      ENDIF
   NEXT
   oPdf:Pdfatsay( "Importe que será depositado por declaración jurada correspondiente al mes de", cm2dpi( nrow += 1.2 ), cmancho( 1.5 ) )
   oPdf:Pdfatsay( ( mes(Month(oVar:dfecha ) ) + " de " + valstr(Year(oVar:dFecha ) ) ), cm2dpi( nrow += .5 ), cmancho( 1.5 ) )


   opdf:Pdfimage( oApp:curproga + "firma1.jpg", cm2dpi( nrow += 3.5 ), cmancho( 9.5 ), 158, 100 )

   opdf:Pdfclosepage()
   oPdf:pdfclose()
catch


Me parece que la otra clase es harupdf, si la buscas en el foro hay información precisa.

Espero te sirva

Luis