IMPRESION ARCHIVOS PDF

IMPRESION ARCHIVOS PDF

Postby pedroluis » Mon Oct 02, 2023 3: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
User avatar
pedroluis
 
Posts: 117
Joined: Sun Oct 08, 2017 12:51 pm
Location: San Luis (Capital), Argentina

Re: IMPRESION ARCHIVOS PDF

Postby karinha » Mon Oct 02, 2023 4:03 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: IMPRESION ARCHIVOS PDF

Postby pedroluis » Mon Oct 02, 2023 6: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
User avatar
pedroluis
 
Posts: 117
Joined: Sun Oct 08, 2017 12:51 pm
Location: San Luis (Capital), Argentina

Re: IMPRESION ARCHIVOS PDF

Postby karinha » Mon Oct 02, 2023 6: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
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: IMPRESION ARCHIVOS PDF

Postby pedroluis » Tue Oct 03, 2023 1: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
User avatar
pedroluis
 
Posts: 117
Joined: Sun Oct 08, 2017 12:51 pm
Location: San Luis (Capital), Argentina

Re: IMPRESION ARCHIVOS PDF

Postby karinha » Tue Oct 03, 2023 3: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
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: IMPRESION ARCHIVOS PDF

Postby leandro » Tue Oct 03, 2023 4: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: Select all  Expand view  RUN

*-------------------
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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: IMPRESION ARCHIVOS PDF

Postby karinha » Tue Oct 03, 2023 5: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
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: IMPRESION ARCHIVOS PDF

Postby karinha » Tue Oct 03, 2023 5:22 pm

Puedes usar HARUPDF.lib mira como és simples:

http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=25918

Code: Select all  Expand view  RUN

#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
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: IMPRESION ARCHIVOS PDF

Postby pedroluis » Wed Oct 04, 2023 3: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
User avatar
pedroluis
 
Posts: 117
Joined: Sun Oct 08, 2017 12:51 pm
Location: San Luis (Capital), Argentina

Re: IMPRESION ARCHIVOS PDF

Postby nageswaragunupudi » Mon Oct 09, 2023 2: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: Select all  Expand view  RUN
#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: Select all  Expand view  RUN
*-------------------
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
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: IMPRESION ARCHIVOS PDF

Postby karinha » Mon Oct 09, 2023 12:21 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: IMPRESION ARCHIVOS PDF

Postby acuellar » Tue Oct 10, 2023 1: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: Select all  Expand view  RUN
#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: Select all  Expand view  RUN
*-------------------
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.
User avatar
acuellar
 
Posts: 1644
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: IMPRESION ARCHIVOS PDF

Postby karinha » Tue Oct 10, 2023 1: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
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: IMPRESION ARCHIVOS PDF

Postby acuellar » Tue Oct 10, 2023 1:54 pm

Muchas Gracias Estimado Joao

Y no hay otro?
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1644
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 91 guests