CREAR PDF CON FILE

CREAR PDF CON FILE

Postby Adolfredo Martinez » Tue Nov 05, 2024 3:16 pm

Hola amigos del forum


Estoy grabando unos pdf y mostrandolos, pero me crea unos bien y la mayoria vacios, me los muestra vacios. Este es el codigo

Code: Select all  Expand view
PRINT oPrn FILE  ".\pdfs\fact_pdf.pdf" NAME "Impresión en Vertical.." PREVIEW
oPrn:SetPage(5)  // LEGAL
oPrn:SetPortrait() //Vertical
oPrn:StartPage()

  ENDPAGE
ENDPRINT

 


Esta aplicacion esta hecha con xharbour//bcc7

Lo que busco es grabar los pdf, de las facturas, que cuando este facturando grabe la factura. Que estoy haciendo mal.


Pero este codigo sin grabarlos me los muestra bien a todos.

Code: Select all  Expand view

PRINT oPrn  NAME "Impresión en Vertical.." PREVIEW
oPrn:SetPage(5)  // LEGAL
oPrn:SetPortrait() //Vertical
oPrn:StartPage()







  ENDPAGE
ENDPRINT
 
Adolfredo Martinez
 
Posts: 112
Joined: Fri Feb 15, 2019 1:37 pm
Location: Aracataca-Colombia

Re: CREAR PDF CON FILE

Postby cmsoft » Tue Nov 05, 2024 4:26 pm

Prueba así:
Code: Select all  Expand view

#include "Fivewin.ch"
#include "print.ch"                                          
FUNCTION Main()
LOCAL oPrn, i, oFont
DEFINE FONT oFont   NAME "ARIAL"  SIZE 60,120
FOR i := 1 TO 5
    PRINT oPrn ;
             NAME "Pdf Nro "+str(i,2) ;
             FILE "pdf"+STR(i,1)+".pdf" PREVIEW
        oPrn:SetPage(5)  // LEGAL
        oPrn:SetPortrait() //Vertical
        PAGE   
        //Texto a imprimir
          @ 10,10 PRINT TO oPrn TEXT "Hoja "+STR(i,2) SIZE 2.5,1 CM FONT oFont ALIGN "CT"
        ENDPAGE     

    ENDPRINT
NEXT
RELEASE oFont
RETURN nil
 

Esto te genera 5 PDF's llamados pdf1.pdf al pdf5.pdf
User avatar
cmsoft
 
Posts: 1290
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: CREAR PDF CON FILE

Postby karinha » Tue Nov 05, 2024 5:17 pm

Code: Select all  Expand view

// C:\FWH\SAMPLES\CMSOFTG2.PRG

#include "FiveWin.ch"
#include "Colores.ch"
#include "print.ch"

FUNCTION Main()
   //                1  2       3     4      5   6   7     8       9
   Local aDatos := {;
      {"Juan 1","Pago 1","Juan Aguarde un momento","Pedro","1000","Algo 1"},;
      {"Juan 2","Pago 2","Juan Aguarde un momento","Pedro","2000","Algo 2"},;
      {"Juan 3","Pago 3","Juan Aguarde un momento","Pedro","3000","Algo 3"},;
      {"Juan 4","Pago 4","Juan Aguarde un momento","Pedro","4000","Algo 4"},;
      {"Juan 5","Pago 5","Juan Aguarde un momento","Pedro","5000","Algo 5"},;
      {"Juan 6","Pago 6","Juan Aguarde un momento","Pedro","6000","Algo 6"},;
      {"Juan 7","Pago 7","Juan Aguarde un momento","Pedro","7000","Algo 7"} ;
      }

   ImprimoRecibos( aDatos )

RETURN nil

STATIC FUNCTION ImprimoRecibos( aDatos )

   LOCAL oPrn, oFont,n := 0, nRow, i := 1, aSizes
   LOCAL cFilePdf := cTempFile( ".\", ".pdf" )
   LOCAL cMsg := "
Exportando a PDF: Aguarde un momento"
   LOCAL cImagem := "
.\FONDO.JPG"

   // PRINT oPrn DOC "
RECIBOS"  PREVIEW MODAL
   // PRINTER oPrn FILE cFilePdf // NAME 'SysCtrl CFDI Report'
   PRINT oPrn PREVIEW FILE "
RECIBOS.pdf" MODAL

      DEFINE FONT oFont NAME "
Arial" SIZE 36, 70 BOLD

      oPrn:SetPage(5)  // LEGAL
      oPrn:SetPortrait() //Vertical

      nRow := 4

      PAGE

         oPrn:SayImage( 0, 0, "
FONDO.JPG", 4900, 7000, NIL, .T., { METRO_ROJO1 , METRO_ROJO2, METRO_GRIS3 } )

         @ nRow, 1 PRINT TO oPrn TEXT aDatos[i,1] SIZE 7,.5 CM FONT oFont LASTROW nRow ALIGN "
C"

         @ nRow, 1 PRINT TO oPrn TEXT aDatos[i,2] SIZE 7,.5 CM FONT oFont LASTROW nRow ALIGN "
C"

         @ nRow, 1 PRINT TO oPrn TEXT aDatos[i,3] SIZE 7,.5 CM FONT oFont LASTROW nRow ALIGN "
C"

         @ nRow, 1 PRINT TO oPrn TEXT aDatos[i,4] SIZE 7,.5 CM FONT oFont LASTROW nRow ALIGN "
C"

         @ nRow, 1 PRINT TO oPrn TEXT aDatos[i,5] SIZE 7,.5 CM FONT oFont LASTROW nRow ALIGN "
C"

         @ nRow, 1 PRINT TO oPrn TEXT aDatos[i,6] SIZE 7,.5 CM FONT oFont LASTROW nRow ALIGN "
C"

         @ nRow, 1 PRINT TO oPrn IMAGE "
..\bitmaps\olga1.jpg" SIZE 4, 4 CM LASTROW nRow

      ENDPAGE

   ENDPRINT

   oFont:End()

   // MSGRUN( cMsg, "
Usuario", {|| Shellexecute( 0,"open", cFilePdf )  } )
   // MSGRUN( cMsg, "
Usuario", {|| Shellexecute( 0,"open", "RECIBOS.PDF" )  } )

RETURN NIL

// FIN / END


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

Re: CREAR PDF CON FILE

Postby Adolfredo Martinez » Fri Nov 08, 2024 6:32 pm

Hola cesar y karina

Estuve probando cesar el ejemplo que colocaste, como necesito crear por lote los pdf, para ser colgado en la pagina web, para que sean consultados por los clientes y puedan descargar su facturas, ese proceso sea hace todos los meses una vez.
Al ejemplo que enviaste le aumente en el FORr a que me creara 30 pdf, los muestra, pero algunos los muestra vacios y es eso lo que pasa. Osea si mando 20 me salen como 5 vacios.
Adolfredo Martinez
 
Posts: 112
Joined: Fri Feb 15, 2019 1:37 pm
Location: Aracataca-Colombia

Re: CREAR PDF CON FILE

Postby karinha » Fri Nov 08, 2024 6:46 pm

Adolfredo, ponga un DELAY y prueba.

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

Re: CREAR PDF CON FILE

Postby Adolfredo Martinez » Fri Nov 08, 2024 11:43 pm

Karinha

Estoy practicando asi:

Code: Select all  Expand view

#include "Fivewin.ch"
#include "print.ch"                                          
FUNCTION Main()
LOCAL oPrn, i, oFont
DEFINE FONT oFont   NAME "ARIAL"  SIZE 60,120
FOR i := 1 TO 10
    PRINT oPrn ;
             NAME "Pdf Nro "+str(i,2) ;
             FILE "pdf"+STR(i,1)+".pdf" PREVIEW
        oPrn:SetPage(5)  // LEGAL
        oPrn:SetPortrait() //Vertical
        PAGE  
        //Texto a imprimir
          @ 10,10 PRINT TO oPrn TEXT "Hoja "+STR(i,2) SIZE 2.5,1 CM FONT oFont ALIGN "CT"
        ENDPAGE    

    ENDPRINT
 Syswait(3)
NEXT i
RELEASE oFont
RETURN nil

 

No me funciono, ademas son unos bastante los que tengo que crear, debe existe algo.
Adolfredo Martinez
 
Posts: 112
Joined: Fri Feb 15, 2019 1:37 pm
Location: Aracataca-Colombia

Re: CREAR PDF CON FILE

Postby karinha » Sat Nov 09, 2024 1:44 pm

Prueba ahora,

Code: Select all  Expand view

// C:\FWH\SAMPLES\ADOLFPRN.PRG - Modificado por: kapiabafwh@gmail.com

#include "Fivewin.ch"
#include "print.ch"

FUNCTION Main()

   MsgRun( "GENERANDO ARCHIVO *.PDF... ", ;
           "Por Favor, Aguarde...      ", ;
           { || WinExec( Generar_PDF() ), 3 } )

RETURN NIL

FUNCTION Generar_PDF()

   LOCAL oPrn, I, oFont

   FOR I := 1 TO 10  // perfecto!

      SYSREFRESH()

      PRINT oPrn NAME "Pdf Nro " + Str( I, 2 ) ;
         FILE "PDF" + ALLTRIM( Str( I, 2 ) ) + ".PDF" PREVIEW

         // DEFINE FONT oFont NAME "ARIAL"  SIZE 60, 120 OF oPrn
          // asi es mejor.
         DEFINE FONT oFont  NAME "COURIER NEW" SIZE 0, -14 BOLD OF oPrn

         oPrn:SetPage( 5 )  // LEGAL
         oPrn:SetPortrait() // Vertical

         PAGE

            // Texto a imprimir
            @ 10, 10 PRINT TO oPrn TEXT "Hoja: " + STR( I, 2 )        ;
               SIZE 2.5, 1 CM FONT oFont ALIGN "CT"

         ENDPAGE

         // Syswait( 3 )  // Opcional

      ENDPRINT

   NEXT

   RELEASE oFont

RETURN NIL

// FIN / END..................kapiabafwh@gmail.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 


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

Re: CREAR PDF CON FILE

Postby karinha » Sat Nov 09, 2024 1:53 pm

Adolfredo, prueba asi tambien, con nCopias...

Code: Select all  Expand view

#include "FiveWin.ch"
#include "Objects.ch"

#define RGB_BLACK      RGB(   0,  0,  0 )
#define RGB_RED        RGB( 255,  0,  0 )
#define RGB_GREEN      RGB(   0,255,  0 )
#define RGB_BLUE       RGB(   0,  0,255 )
#define RGB_CYAN       RGB(   0,255,255 )
#define RGB_YELLOW     RGB( 255,255,  0 )
#define RGB_MAGENTA    RGB( 255,  0,255 )
#define RGB_WHITE      RGB( 255,255,255 )
#define FW_DONTCARE    0
#define FW_THIN        100
#define FW_EXTRALIGHT  200
#define FW_LIGHT       300
#define FW_NORMAL      400
#define FW_MEDIUM      500
#define FW_SEMIBOLD    600
#define FW_BOLD        700
#define FW_EXTRABOLD   800
#define FW_HEAVY       900
#define DMPAPER_A4       9

FUNCTION IMP_INSTALADAS()

   LOCAL oPrn, oPrint, oFnt, cPrinter := ""
   LOCAL oDlg, oBrw
   LOCAL aPrn := {}
   LOCAL cDef, i := 1

   #ifdef __HARBOUR__  // GetPrinters() and GetDefaultPrinter() do not work in Harbour

      aPrn := aGetPrinters ()

      cDef := DefaultPrinter()

   #else // Harbour

      aPrn := GetPrinters ()

      cDef := GetDefaultPrinter()

   #endif

   IF Empty ( aPrn )

      MsgAlert ( "No Printers found" )

      RETURN NIL

   ENDIF

   DEFINE DIALOG oDlg FROM 2, 2 TO 21, 50 TITLE "Available Printers"

   @ 1, 2 LISTBOX oBrw FIELDS aPrn[ i ] ;
      HEADERS "Printer Array" ;
      FIELDSIZES 200 ;
      OF oDlg ;
      SIZE 100, 100

   oBrw:bGoTop    = { || i := 1 }
   oBrw:bGoBottom = { || i := Eval( oBrw:bLogicLen ) }
   oBrw:bSkip     = { | nWant, nOld | nOld := i, i += nWant, ;
      i := Max( 1, Min( i, Eval( oBrw:bLogicLen ) ) ), ;
      i - nOld }
   oBrw:bLogicLen = { || Len( aPrn ) }
   oBrw:cAlias    = "Array"                // Just put something

   @ 7.8, 2 SAY "Default printer: " + cDef

   @ 1, 20 BUTTON "&Print (FW)" OF oDlg ACTION TestCopias ( aPrn[i] )

   @ 2, 20 BUTTON "&Print (xH)" OF oDlg ACTION Test2 ( aPrn[i] )

   @ 3, 20 BUTTON "&End       " OF oDlg ACTION( oDlg:End() )

   ACTIVATE DIALOG oDlg CENTERED

RETURN NIL

FUNCTION TestCopias( cPrn )  // Imprimir varias copias

   LOCAL nI, nCopias := 10  // Adolfredo, aqui!

   // SetCopies
   FOR nI := 1 TO nCopias

      TestPrint( cPrn )

   NEXT

RETURN NIL

FUNCTION TestPrint( cPrn )

   LOCAL oFnt, oPrint
   LOCAL cText := "Este é um texto de teste para impressão"

   PRINT oPrint NAME "Formulario" TO ( cPrn )

   DEFINE FONT oFnt NAME "ARIAL" SIZE 0, -14 OF oPrint

   // oPrint:SetCopies ( 2 ) // Nao funciona

   oPrint:SetLandscape()

   // oPrint:Setup ()   // check the settings

   PAGE

      oPrint:CmSay ( 1, 1, cText, oFnt )

   ENDPAGE

   ENDPRINT

   oFnt:End()

RETURN NIL

FUNCTION Test2 ( cPrn )

   LOCAL oPrinter
   LOCAL aFonts, cFont, nFont

   oPrinter           := Win32Prn():new( cPrn )      // Create printer object and configure print job
   oPrinter:landscape := .F.
   oPrinter:formType  := DMPAPER_A4
   oPrinter:copies    := 2  // <--- 2 copies !!

   IF ! oPrinter:create()                       // Create device context
      Alert( "Cannot create device context" )
      QUIT
   ENDIF

   IF ! oPrinter:startDoc( "xHarbour test page" )   // Create print job
      Alert( "Cannot create document" )
      QUIT
   ENDIF

   oPrinter:textOut( "Text in default font" )       // Text in fixed font
   oPrinter:bold( FW_EXTRABOLD )
   oPrinter:textOut( oPrinter:fontName )
   oPrinter:bold( FW_NORMAL )
   oPrinter:newLine()

   aFonts := oPrinter:getFonts()
   nFont  := AScan( aFonts, ;
      {|a| "ARIAL" $ Upper( a[1] ) } )
   cFont  := aFonts[nFont,1]

   oPrinter:setFont( cFont )                       // Text in proportional font
   oPrinter:textOut( "Text in Arial font" )
   oPrinter:bold( FW_EXTRABOLD )
   oPrinter:textOut( oPrinter:fontName )
   oPrinter:bold( FW_NORMAL )
   oPrinter:newLine()

   oPrinter:setColor( RGB_YELLOW, RGB_BLUE )    // Colored text
   oPrinter:textOut( "Yellow on Blue" )
   oPrinter:newLine()

   oPrinter:setPen( PS_DASH, 5, RGB_GREEN )    // Draw colored line across page

   oPrinter:line( oPrinter:posX, ;
      oPrinter:posY, ;
      oPrinter:rightMargin, ;
      oPrinter:posY  )

   oPrinter:endDoc()       // Send output to printer
   oPrinter:destroy()      // Release GDI device context

RETURN NIL

FUNCTION DefaultPrinter()

   LOCAL nPrn, nRet, sGetDefaultPrinter

   nRet := PrinterSetUp()

   nPrn := PrnGetName()

   IF( nRet # 0 )

      SetDefaultPrinter( PRNGETNAME() )

      sGetDefaultPrinter := GetDefaultPrinter()

      // ? PrnStatus( sGetDefaultPrinter )

      IF PrnStatus( sGetDefaultPrinter ) = 4096

         // Verifica se SPOOLER esta desligado e tenta liga-lo
         MsgRun( sGetDefaultPrinter +": "+isprint( GetDefaultPrinter() ) + ;
                         " ou Spooler Desligado.", "Status da Impressora", ;
                 {|| WinExec( "NET START SPOOLER", 7 ) } )

      ENDIF

      //? GetPrinter()

   ELSE

      MsgAlert ( "No Printers found" )

      RETURN( .F. )

   ENDIF

RETURN( sGetDefaultPrinter ) // NIL

// FIM
 


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

Re: CREAR PDF CON FILE

Postby karinha » Sat Nov 09, 2024 2:26 pm

Prueba asi tambien,

Code: Select all  Expand view

// C:\FWH\SAMPLES\ADOLFPR2.PRG - Modificado por: kapiabafwh@gmail.com

#include "Fivewin.ch"
#include "print.ch"

STATIC nNumPdf := 1

FUNCTION Main()

   LOCAL nI, nCopias := 10  // Adolfredo, aqui!

   // SetCopies
   FOR nI := 1 TO nCopias

      MsgRun( "GENERANDO ARCHIVO *.PDF... ", ;
              "Por Favor, Aguarde...      ", ;
              { || WinExec( Generar_PDF() ), 3 } )

   NEXT

RETURN NIL

FUNCTION Generar_PDF()

   LOCAL oFont, oPrn
   LOCAL cText := "Este é um texto de teste para impressão: " + ;
                  ALLTRIM( STR( nNumPdf ) )

   // Genera directo sin PREVIEW
   PRINT oPrn NAME "Pdf Nro " + ALLTRIM( STR( nNumPdf ) ) ;
      FILE "PDF" + ALLTRIM( STR( nNumPdf ) ) + ".PDF" // PREVIEW(opcional)

      DEFINE FONT oFont  NAME "COURIER NEW" SIZE 0, -14 BOLD OF oPrn

      oPrn:SetPage( 5 )  // LEGAL
      oPrn:SetPortrait() // Vertical

      PAGE

         oPrn:CmSay ( 1, 1, cText, oFont )

      ENDPAGE

   ENDPRINT

   oFont:End()

   nNumPdf := nNumPdf + 1

RETURN NIL

// FIN / END..................kapiabafwh@gmail.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 


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

Re: CREAR PDF CON FILE

Postby Adolfredo Martinez » Sat Nov 09, 2024 7:22 pm

Hola Karinha.

Gracias por tu ayuda.

Pero no logro conseguir hacerlo,con el ciclo de 10 crea 2 vacios, con 15 3 vacios.
Lo que pasa es que son unos 5000, que tengo que crear en un dia, para ser colgado en la web, esto se hace una vez al mes. Para que los clientes consulten su facturas y hagan el pago en linea.
Es por eso que debo estar seguro que lo esta creando todos bien, porque entonce me toca revisar cual no creo.
Tu los as proba varias vez, y te funciona, inclusive con mas. Porque si a ti te funciona el problema lo tengo yo en la version de fwh o mi equipo.
Tengo la version fwh19.03 xharbour.
Adolfredo Martinez
 
Posts: 112
Joined: Fri Feb 15, 2019 1:37 pm
Location: Aracataca-Colombia

Re: CREAR PDF CON FILE

Postby karinha » Sat Nov 09, 2024 9:28 pm

Con FWH19.05

Code: Select all  Expand view

 Pasta(Carpeta) de c:\FWH1905\samples

09/11/2024  18:22           171.040 PDF1.pdf
09/11/2024  18:22           171.056 PDF2.pdf
09/11/2024  18:22           171.058 PDF3.pdf
09/11/2024  18:22           171.063 PDF4.pdf
09/11/2024  18:22           171.061 PDF5.pdf
09/11/2024  18:22           171.052 PDF6.pdf
09/11/2024  18:22           171.039 PDF7.pdf
09/11/2024  18:22           171.054 PDF8.pdf
09/11/2024  18:22           171.049 PDF9.pdf
           9 arquivo(s)      1.539.472 bytes
 


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

Re: CREAR PDF CON FILE

Postby Adolfredo Martinez » Sat Nov 09, 2024 11:58 pm

Gracias a todos por su colaboracion en especial a Karinha.

Lo resolvi por otra via, porque lo ncesito es de urgencia:

Code: Select all  Expand view


function DoRpt1( oDom )

    local oPrn  
    local cName    
    local cFile 
    local cUrlFile 
    local cLogo     := AppPathImages() + 'logo_report.png' 
    local i:=0

FOR i := 1 TO 20

    oPrn    := InitPrn()
        cName   := 'rpt1-' + ltrim(str( hb_milliseconds() ) ) +ltrim(str(i) ) + '.pdf'
    cFile   := AppPathReport() + cName
    cUrlFile:= AppUrlReport()  + cName
   
    oPrn:StartPage()
        oPrn:CmSayBitmap( 0.5, 0.5, cLogo, 2.8, 2 )    
        oPrn:CmSay( 0.7 ,3.5, "Charly's motorcycle " + "No. " + ltrim(str(i) ), oPrn:hFont[ 'title_logo' ] )

        oPrn:CmSay( 5.7 ,3.5, "Adolfredo motorcycle " + time(), oPrn:hFont[ 'title_logo' ] )


        oPrn:CmLine( 3,  0.5, 3, 20.5, 1 )
    oPrn:EndPage()
 
    oPrn:Save( cFile )
       //oDom:SetUrl( cUrlFile, '_blank' )
    oPrn:End()     
NEXT i

return nil  
 


Ese ejemplo lo hizo Charly y es de UT, funciona con Tweb+harbour, lo adapte y me crea la cantidad que quiera pero rapido.
Adolfredo Martinez
 
Posts: 112
Joined: Fri Feb 15, 2019 1:37 pm
Location: Aracataca-Colombia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 49 guests