FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour IMPRESION ARCHIVOS PDF
Posts: 117
Joined: Sun Oct 08, 2017 12:51 PM
IMPRESION ARCHIVOS PDF
Posted: Mon Oct 02, 2023 03:41 PM

Buenos dias señores !

Otro problemita que se que ustedes trendrán la solución.

Tengo FWH 22.12

El tema es que quiero generar en PDF todas las facturas de un cliente (1600 facturas) y

las empieza a generar bien, pero cuando alcanza el núumero de factura 300 ó 400 las

siguientes las genera con pdf's vacíos.

Se me ocurrió pensar que es un problema de memoria o un uso excesivo de archivos temporales.

Es como si la memoria se quedara sin lugar y no quisiera generar más archivos.

Como si se ahogara...

Ya que estamos otra pregunta:

¿ Hay forma de regular el tamaño en bites de los pdf's generados ?,

porque a veces me los genera de distinto tamaño.

Las paso el código.

sele 99 // Archivo con todas las facturas a imprimir.

go top

xsay:="Socio: "+strzero(99->cliente,4)+" - Fac.: "+xlet+"-"+str(xemi,1)+"-"+strzero(99->numero,6)

DEFINE DIALOG oIndex TITLE "Generado Facturas en PDF" FROM 1,1 TO 3,40

@0,2 SAY oText PROMPT xsay OF oIndex COLOR CLR_HBLUE Font m->oFontFis

ACTIVATE DIALOG oIndex NOWAIT CENTER

do while !eof()

xnum:=99->numero

VTA1100PE() // Genera los pdf

sele 99

skip

xsay:="Socio: "+strzero(99->cliente,4)+" - Fac.: "+xlet+"-"+str(xemi,1)+"-"+strzero(99->numero,6)

oText:refresh()

sysrefresh()

enddo

sele 1

oIndex:End()

oDlg:End()

sysrefresh()

xtim2:=time()

msgwait(ELAPTIME(xtim1,xtim2),"Tiempo Transcurrido",4)

*-------------------

FUNCTION VTA1100PE()

*-------------------

xnum:=99->numero

cPdfFile := m->xpath+"\PDF\"+strzero(99->cliente,4)+".pdf"

PRINTER oprn FILE cPdfFile

// Acá imprime la factura.

return nil

Como siempre gracias por su atención y deferencia !

Pedro Lavallén - Argentina - San Luis

Pedro L. Lavallen

San Luis (Capital), Argentina
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: IMPRESION ARCHIVOS PDF
Posted: Mon Oct 02, 2023 04:03 PM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 117
Joined: Sun Oct 08, 2017 12:51 PM
Re: IMPRESION ARCHIVOS PDF
Posted: Mon Oct 02, 2023 06:03 PM

Hola Karinha !

Gracias por tu respuesta, pero no es ese el problema. Voy a resumir

Estos pdf que genero son facturas de servicios, es decir con cuadros distintos tañaños

del letras, códigos de barras y código QR.

El programa genera correctamente los pdfs, pero cuando

quiero imprimir 1600 archivos.

los primeros 500 los imprime correctamente, pero a partir del 501 al 1600 empieza a generarlos mal.

Por ejemplo los primeros 500 (que genera bien) tienen un peso de 295 KB cada uno,

y los siguiente, es decir del 501 al 1600 los genera mal y tienen un peso de 2 KB cada uno.

... Parecería como que agotara la memoria...

La segunda pregunta era:

¿ Hay alguna manera de disminuir el peso (en KB) de cada PDF en el momento de generarlo ?

Es decir que el que me sale ahora de 295 KB ¿ los pueda bajar a 41 KB ?

Saludos !

Pedro L. Lavallen

San Luis (Capital), Argentina
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: IMPRESION ARCHIVOS PDF
Posted: Mon Oct 02, 2023 06:17 PM

Hola Pedro, debes admitir que la cantidad de PDF que has impreso es muy grande y desbordará la pila. ¿Qué tal limitar la generación por intervalos? 001 a 500 y de 501 a 1000 y de 1001 a 1500? crear un diálogo donde el usuario informa la cantidad de PDFS a generar. Y internamente si excede la cantidad permitida, lo avisas y lo bloqueas.

Solo una ideia.

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 117
Joined: Sun Oct 08, 2017 12:51 PM
Re: IMPRESION ARCHIVOS PDF
Posted: Tue Oct 03, 2023 01:18 PM

Hola Karinha !

Gracias por tus comentarios !

y si, terminé haciendolo como vos decís, impriendo de a rangos.

De esa manera pude generarlos todos.

Gracias !

Pero me queda la otra pregunta:

Como reducir el tamaño (MBites) de los pdfs generados.

Por ejemplo: probé hacer lo mismo con el fwh2212 y con el fwh1709,

con las 2 versiones funciona, pero los pdfs que genera cada versión

tienen la mitad de MB de los pdf generados.

Pedro L. Lavallen

San Luis (Capital), Argentina
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: IMPRESION ARCHIVOS PDF
Posted: Tue Oct 03, 2023 03:50 PM

Hola Pedro, la segunda pregunta, sólo el Maestro Nages puede decir si es posible. Envíale un correo electrónico con tus preguntas, ¿sí?

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: IMPRESION ARCHIVOS PDF
Posted: Tue Oct 03, 2023 04:26 PM
Pedro como vas?

Te molesto con algo? :oops: será que nos puedes mostrar como imprimes un pdf ya generado, directo desde fw?, ya que intente de la forma que mostraste, pero no hace nada. No se si haga falta una parte del código o si usas una herramienta adicional para hacer la impresión del pdf.

De antemano gracias
Code (fw): Select all Collapse
*-------------------
FUNCTION VTA1100PE()
*-------------------
xnum:=99->numero
cPdfFile := m->xpath+"\PDF\"+strzero(99->cliente,4)+".pdf"
PRINTER oprn FILE cPdfFile //*******ESTA LINEA FUE LA QUE USAMOS******

// Acá imprime la factura.

return nil
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: IMPRESION ARCHIVOS PDF
Posted: Tue Oct 03, 2023 05:11 PM
Buenas tardes Pedro, un excelente generador de PDF es la impresora VIRTUAL pdfMachine. Lo uso para imprimir pruebas (no necesito una impresora para probar los informes), pdfMachine es suficiente para mí.

Download para testes:

https://www.pdfmachine.com/pdfmachine/download/

É de pago, más simplesmente, EXCELENTE!!

Otra dica:

https://forums.fivetechsupport.com/viewtopic.php?f=6&t=38472

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: IMPRESION ARCHIVOS PDF
Posted: Tue Oct 03, 2023 05:22 PM
Puedes usar HARUPDF.lib mira como és simples:

http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=25918
Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "harupdf.ch"

FUNCTION Main()

   LOCAL oPdf, Page, oImage, oFont, Font1, Font2, Font3

   oPdf := HPDF_New()

   HPDF_SetCompressionMode( oPdf, HPDF_COMP_ALL )

   //*HPDF_SetPassword( oPdf, 'jaime', 'alberto' )

   page := HPDF_AddPage( oPdf )

   HPDF_Page_SetSize( page, 3, 0 ) //** 3 = A4 

   //**oImage:=HPDF_LoadJpegImageFromFile (oPdf,'png\Qr_demo.jpg')
   //**HPDF_Page_DrawImage(page, oImage, 100, 700, 100, 100)

   //HPDF_Page_SetRGBFill(page, 0.80, 0.80, 0.80) //** Para rellenar
   HPDF_Page_SetLineWidth( page, 0.5 ) // ** Grosor
   HPDF_Page_SetRGBStroke( page, 0.2, 0.6, 1.0 ) // ** Color
   HPDF_Page_Rectangle( page, 20, 760, 560, 70 )
   HPDF_Page_Stroke ( page ) //** Muestra el cuadro

   HPDF_Page_BeginText ( page )

   Font1 := HPDF_LoadTTFontFromFile( oPdf, 'C:\Windows\Fonts\Verdana.ttf', HPDF_TRUE )
   Font2 := HPDF_LoadTTFontFromFile( oPdf, 'C:\Windows\Fonts\Lucon.ttf', HPDF_TRUE )

   oFont := HPDF_GetFont( oPdf, Font1, "WinAnsiEncoding" )

   HPDF_Page_SetFontAndSize( page, oFont, 12 )
   HPDF_Page_TextOut( page, 100, 640, "Jaime Coronado 1" )

   oFont := HPDF_GetFont( oPdf, Font2, "WinAnsiEncoding" )

   HPDF_Page_SetFontAndSize( page, oFont, 9 )
   HPDF_Page_TextOut( page, 100, 700, "Jaime Coronado 2" )
   HPDF_Page_TextOut( page, 100, 670, "Programador" )
   HPDF_Page_EndText( page )

   HPDF_SaveToFile( oPdf, 'Prueba.pdf' )

   HPDF_Free( oPdf )

RETURN( nil )
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 117
Joined: Sun Oct 08, 2017 12:51 PM
Re: IMPRESION ARCHIVOS PDF
Posted: Wed Oct 04, 2023 03:07 PM

Hola Leandro !

Si exactamente use el código como vos lo ponés.

cPdfFile := m->xpath+"\PDF\"+strzero(99->cliente,4)+".pdf"

PRINT oprn FILE cPdfFile

Saludos !

Pedro L. Lavallen

San Luis (Capital), Argentina
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: IMPRESION ARCHIVOS PDF
Posted: Mon Oct 09, 2023 02:06 AM
Yes, using HaruPDF reduces the size of PDF.
For using HaruPDF , you do not need to change any code or write any extra-code.
Please do NOT do that.

Only two changes you need to make:
Code (fw): Select all Collapse
#inclucde "fivewin.ch"

REQUEST FWHARU  // add this here

function Main()

   TPrinter():lUseHaruPDF := .t.
All PDFs will now be created using HaruPDF.
Do not make any other changes or add any new code in your software.
Keep your present function:
Code (fw): Select all Collapse
*-------------------
FUNCTION VTA1100PE()
*-------------------
xnum:=99->numero
cPdfFile := m->xpath+"\PDF\"+strzero(99->cliente,4)+".pdf"
PRINTER oprn FILE cPdfFile

// Acá imprime la factura.

return nil
as it is without any changes.
Regards



G. N. Rao.

Hyderabad, India
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: IMPRESION ARCHIVOS PDF
Posted: Mon Oct 09, 2023 12:21 PM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: IMPRESION ARCHIVOS PDF
Posted: Tue Oct 10, 2023 01:13 PM
Thanks Mr. Rao
nageswaragunupudi wrote:Yes, using HaruPDF reduces the size of PDF.
For using HaruPDF , you do not need to change any code or write any extra-code.
Please do NOT do that.

Only two changes you need to make:
Code (fw): Select all Collapse
#inclucde "fivewin.ch"

REQUEST FWHARU  // add this here

function Main()

   TPrinter():lUseHaruPDF := .t.
All PDFs will now be created using HaruPDF.
Do not make any other changes or add any new code in your software.
Keep your present function:
Code (fw): Select all Collapse
*-------------------
FUNCTION VTA1100PE()
*-------------------
xnum:=99->numero
cPdfFile := m->xpath+"\PDF\"+strzero(99->cliente,4)+".pdf"
PRINTER oprn FILE cPdfFile

// Acá imprime la factura.

return nil
as it is without any changes.
Con Haru es mas rápido y mas pequeño, pero los FONTs se distorcionan.
Utilizo LUCIDA CONSOLE para el detalle con cantidades, en la vista previa muestra correcto y en el PDF movido.
He intentado con COURIER NEW muestra bien en el PDF pero es muy claro.
Quizas haya otro FONT que se pueda usar

With Haru it is faster and smaller, but the FONTs are distorted.
I use Lucida Console for the detail with quantities, in the preview it shows correct and in the PDF it moved.
I have tried COURIER NEW it shows fine in the PDF but it is very clear.
Maybe there is another FONT that can be used.

Thanks for the help
Saludos,



Adhemar C.
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: IMPRESION ARCHIVOS PDF
Posted: Tue Oct 10, 2023 01:17 PM

Adhemar, COURIER NEW BOLD es la mejor manera de ahorrar (gastar menos) tinta/tóner de impresora.

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: IMPRESION ARCHIVOS PDF
Posted: Tue Oct 10, 2023 01:54 PM

Muchas Gracias Estimado Joao

Y no hay otro?

Saludos,



Adhemar C.