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 .
Pequeño ejemplo de unir dos pdf en uno nuevo .
Necesita el Adobe Acrobat ( no vale el Reader ) pues utiliza la automatización OLE .
// 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