FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Unir varios pdfs
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Unir varios pdfs
Posted: Thu Jul 17, 2025 10:31 PM

Hola buenas tardes para todos, un cliente requiere para su negocio, que se le envíen a sus clientes, unas cartas de garantía y la factura de venta en pdf, la factura la generamos desde nuestra aplicación, pero las cartas de garantía son documentos que se generan ya sea en word o excel, necesitamos poder compilar esos archivos pdfs para ser enviados en uno solo pdf a los clientes finales.

Espero haberme hecho entender, gracias de antemano.

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: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Unir varios pdfs
Posted: Fri Jul 18, 2025 01:58 AM
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Unir varios pdfs
Posted: Fri Jul 18, 2025 03:08 PM
Mira se ayuda:

https://fivetechsupport.com/forums/viewtopic.php?t=37519

https://fivetechsupport.com/forums/viewtopic.php?p=66248#p66248

https://www.fivetechsoft.com/forums/viewtopic.php?t=31280

Intente con PDFlib (Clipper/FiveWin).
// Suponha que você tem funções wrapper para a biblioteca PDFlib (ex: PDF_open, PDF_add_page, PDF_close)
Function MergePDFs(cFile1, cFile2, cOutputFile)
  Local nHandle1, nHandle2, nStatus

  // Abre os arquivos PDF
  nHandle1 := PDF_open(cFile1)
  nHandle2 := PDF_open(cFile2)

  // Verifica se os arquivos foram abertos com sucesso
  If nHandle1 == 0 .OR. nHandle2 == 0
     Alert("Erro ao abrir os arquivos PDF.")
     Return .F.
  EndIf

  // Combina as páginas
  nStatus := PDF_add_page(nHandle1, nHandle2) // Supondo uma função que copia as páginas
  If nStatus == 0
    Alert("Erro ao combinar páginas.")
    PDF_close(nHandle1)
    PDF_close(nHandle2)
    Return .F.
  EndIf

  // Salva o novo arquivo PDF
  If !PDF_close(nHandle1, cOutputFile) // Supondo que o fechamento salva o arquivo
    Alert("Erro ao salvar o arquivo PDF.")
    Return .F.
  EndIf

Return .T.
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 230
Joined: Thu Sep 17, 2015 11:40 PM
Re: Unir varios pdfs
Posted: Wed Jul 23, 2025 04:16 AM

El trabajo de los Pdf lo realizo con PDFTK muy practico y facil de realizar tambien lo uso para llenar pdf formularios desde mis sistema

Carlos Atuncar - CaSoftSystem
Chincha - Perú
+51983478218
carlosalbatun@gmail.com
Posts: 230
Joined: Thu Sep 17, 2015 11:40 PM
Re: Unir varios pdfs
Posted: Wed Jul 23, 2025 01:20 PM
un pequeño ejemplo
Procedure PPlanos( cCodigo ,Modo)
local cFile,cFileFdf,cMsg,oWait
local cRuta := cGetDir("*.pdf",cFilePath( GetModuleFileName( GetInstance() ) ) + "planos",.t.) // ruta donde estan los pdf
local otxt,xlin,mPdf:={}
local PdfFinal:= op:temp+BeneficiarioDni( cCodigo )+".pdf" // nombre final del archivo combinado
local cfecha


If Len( cCodigo ) = 0
Return
Endif

If IsDir( cRuta )
cRuta += "\"
Else
MsgStop("Esta opcion no esta habilitada para esta PC","STOP" )
Return
EndIf

If !File("pdftk.exe")
MsgStop("No Existe el conversor de formularios!!","STOP" )
Return
Endif

mDir :=DIRECTORY ( op:temp+"*.*")
AEval( mDir ,{|a| fErase( op:temp+a[1] )})


cFecha := MsgDate( date(), "Fecha de Impresion" )

WaitOn("Espere un momento por favor...",@oWait )

// en esta parte se crea el archivo que contiene los datos editables del pdf
otxt:=FCreate( "datos.fdf" )
xlin := "%FDF-1.2"
FWRITE(otxt,xlin+CRLF )
xlin := "1 0 obj<</FDF<< /Fields["
FWRITE(otxt,xlin+CRLF )
xlin := "<< /T (beneficiario) /V ("+BeneficiarioName( cCodigo, .T. )+")>>"
FWRITE(otxt,xlin+CRLF )
xlin := "<< /T (conyuge) /V ("+ConyugeName( cCodigo, .T. )+")>>"
FWRITE(otxt,xlin+CRLF )
xlin := "<< /T (direccion) /V ("+Direccion( cCodigo,.T.)+")>>"
FWRITE(otxt,xlin+CRLF )
xlin := "<< /T (predio_dir) /V ("+SoloDir( cCodigo,.T.)+")>>"
FWRITE(otxt,xlin+CRLF )
xlin := "<< /T (Mz) /V ("+Alltrim(GetMz( cCodigo))+")>>"
FWRITE(otxt,xlin+CRLF )
xlin := "<< /T (Lote) /V ("+Alltrim(GetLote( cCodigo))+")>>"
FWRITE(otxt,xlin+CRLF )
xlin := "<< /T (Distrito) /V ("+GetDistrito( cCodigo)+")>>"
FWRITE(otxt,xlin+CRLF )
xlin := "<< /T (Provincia) /V ("+GetProvincia( cCodigo)+")>>"
FWRITE(otxt,xlin+CRLF )
xlin := "<< /T (Departamento) /V ("+GetDepartamento( cCodigo)+")>>"
FWRITE(otxt,xlin+CRLF )
xlin := "<< /T (fecha) /V ("+Dtoc( cFecha )+")>>"
FWRITE(otxt,xlin+CRLF )
xlin := "] >> >>"
FWRITE(otxt,xlin+CRLF )
xlin := "endobj"
FWRITE(otxt,xlin+CRLF )
xlin := "trailer"
FWRITE(otxt,xlin+CRLF )
xlin := "<</Root 1 0 R>>"
FWRITE(otxt,xlin+CRLF )
xlin := "%%EOF"
FWRITE(otxt,xlin+CRLF )
FCLOSE( otxt )

// llenar datos del Benficiario
mFiles := Directory( cRuta+"*.pdf" )

For a:=1 TO Len( mFiles )
SysRefresh()
Aadd( mPdf,op:temp+mFiles[a][1] )
WaitRun( "pdftk.exe "+cRuta+mFiles[a][1]+" fill_form datos.fdf output "+op:temp+mFiles[a][1],0 )
*?cRuta+mFiles[a][1]
Next

// unir los archivos en uno solo
b:=""
For a:=1 TO Len( mPdf )
b += mPdf[a]+" "
Next

WaitRun( "pdftk.exe "+b+"output "+PdfFinal,0 )

WaitOff( @oWait )

If File(pdfFinal)
TRY
DEFINE WINDOW cDlg TITLE "Vista de Archivo - PDF"

@ 0,0 ACTIVEX oActiveX OF cDlg PROGID "AcroPDF.PDF.1"
cDlg:oClient = oActiveX
oActiveX:src = PdfFinal
oActiveX:GotoFirstPage()

ACTIVATE WINDOW cDlg MAXIMIZED
CATCH oErr
MsgStop("Existe Problemas para Visualizar el Archivo","Error" )
END
EndIf

Return
Carlos Atuncar - CaSoftSystem
Chincha - Perú
+51983478218
carlosalbatun@gmail.com
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Unir varios pdfs
Posted: Wed Jul 23, 2025 03:27 PM
I'm using Ghostscript. This is a sample:
#define GSCMD "c:\programmi\pdfcreator\ghostscript\bin\gswin32c.exe"

WAITRUN( GSCMD + " -sDEVICE=pdfwrite -dNOPAUSE -dQUIET -dBATCH -dDumpPageLabels=0 -sOutputFile=" + cOut + " -dFirstPage=1 -dLastPage=1 Ricevuta.pdf -dFirstPage=1 -dLastPage=2 " + cPdf, 0, 0 )
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Unir varios pdfs
Posted: Fri Jul 25, 2025 09:34 PM

Pdftk es lo mejor, dale una oportunidad.

Lo uso hasta en app web, la verdad me ayuda mucho.

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Unir varios pdfs
Posted: Mon Jul 28, 2025 01:44 PM
carlos vargas wrote: Pdftk es lo mejor, dale una oportunidad.
Lo uso hasta en app web, la verdad me ayuda mucho.
Maestro Carlos vargas, donde puedo descargar Pdftk de forma segura?

Gracias, tks.

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Unir varios pdfs
Posted: Mon Jul 28, 2025 03:13 PM

No recuerdo de donde lo baje, lo uso desde 2015, pero buscare y te enviaré el pack en un link.

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Unir varios pdfs
Posted: Wed Sep 17, 2025 03:07 PM
Excelente gracias, lo voy a probar y cualquier cosa comento :D :D :D :D
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) ]

Continue the discussion