FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour merge de pdfs mediante ole
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
merge de pdfs mediante ole
Posted: Fri Jan 17, 2014 08:23 AM
Por si a alguien le viene bien .
Pequeño ejemplo de unir dos pdf en uno nuevo .
Necesita el Adobe Acrobat ( no vale el Reader ) pues utiliza la automatización OLE .

Code (fw): Select all Collapse
// FiveWin  Pdf Merger

#include "FiveWin.ch"

//-----------------------------------------------------------------//

function Main()

   local oDlg, oBtn1, oBtn2, oSay1, oSay2, oSay3
   local oGet1, cGet1 := Space( 20 )
   local oGet2, cGet2 := Space( 20 )
   local oGet3, cGet3 := Space( 20 )
   local oFontDlg 
 
   DEFINE FONT oFontDlg  NAME 'Ms Sans Serif'  SIZE 0,-13

   DEFINE DIALOG oDlg TITLE "Merge pdf" ;
      FROM  22,  48 TO  40, 112 FONT oFontDlg  
      
   @ 116, 140 BUTTON oBtn1 PROMPT "&Ok" ;
      SIZE 40, 12 PIXEL OF oDlg ;
      ACTION MergePdf(cGet1, cGet2, cGet3 )

   @ 116, 196 BUTTON oBtn2 PROMPT "&Cancel" ;
      SIZE 40, 12 PIXEL OF oDlg ;
      ACTION odlg:End()

   @ 34,  20 SAY oSay1 PROMPT "Pdf Inicial "  SIZE  64,  16 PIXEL OF oDlg

   @ 58,  20 SAY oSay2 PROMPT "&Pdf a Insertar"  SIZE  64,  16 PIXEL OF oDlg

   @ 82,  20 SAY oSay3 PROMPT "&Pdf de Salida" SIZE  64,  16 PIXEL OF oDlg

   @ 32, 68 GET oGet1 VAR cGet1 SIZE 148, 12 PIXEL OF oDlg ;
   ACTION oGet1:cText( cGetFile("*.pdf", "Select a file" )  )

   @ 56, 68 GET oGet2 VAR cGet2 SIZE 148, 12 PIXEL OF oDlg ;
   ACTION oGet2:cText( cGetFile("*.pdf", "Select a file" )  )

   @ 80, 68 GET oGet3 VAR cGet3 SIZE 148, 12 PIXEL OF oDlg;
   ACTION oGet3:cText( cGetFile("*.pdf", "Select a file" )  )

   ACTIVATE DIALOG oDlg

return oDlg

//----------------------------------------------------------------------------//

Function MergePdf(cEntra1, cEntra2, cSalida )

local app := CreateObject("AcroExch.App")

local oAVDoc1 := CreateObject("AcroExch.AVDoc")
local oAVDoc2 := CreateObject("AcroExch.AVDoc")

local lOk
 
local oPDDoc1 := CreateObject("AcroExch.PDDoc")
local oPDDoc2 := CreateObject("AcroExch.PDDoc")
local destDoc := CreateObject("AcroExch.PDDoc")
local x

lok = oAVDoc1:Open(cEntra1, "")

 IF !lOk
     MsgInfo("error al abrir "+ cEntra1 +" pdf" )
     RETURN .f.
 ENDIF

lok = oAVDoc2:Open(cEntra2, "")

 IF !lOk
     MsgInfo("error al abrir "+ cEntra2 +" pdf" )
     RETURN .f.
 ENDIF

// app:hide()
 
 oPDDoc1 = oAVDoc1:GetPDDoc()
 oPDDoc2 = oAVDoc2:GetPDDoc()
 
 X = oPDDoc1:GetNumPages() - 1

lok := opDDoc1:InsertPages( x, OPDDoc2, 0, oPDDoc2:GetNumPages(), 0 )

 IF !lOk
     MsgInfo("Se no pudo insertar el documento "+ cEntra2 +"en " +cEntra1 )
     RETURN .f.
 ENDIF

lok := opDDoc1:Save( 1, cSalida )
 IF !lOk
     MsgInfo("Se no pudo Grabar "+ cSalida )
     RETURN .f.
 ENDIF

opDDoc1:Close()

opDDoc2:Close()
opddoc1:= nil
opddoc2:= nil
oAVDoc1:Close(1)
oAVDoc2:Close(1)

app:CloseAllDocs()

app:Exit()

Return nil
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: merge de pdfs mediante ole
Posted: Sun Jan 19, 2014 02:04 PM

Manuel,

gracias! :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion