Hola Jairo:
Lo hago de la siguiente manera:
Descargo el PDFTK y lo instalo en el directorio donde tengo la aplicaci贸n.
Luego con el programa NitroPDF creo el PDF, inserto la imagen que quiero mostrar, luego en el menu Formularios elijo en campos, Campo de Texto y voy colocando uno por uno en donde quiero que aparezca cada campo con informaci贸n. Haciendo click con el boton derecho elijo las propiedades del campo, (Tama帽o y Tipo de Letra, color, si el campo es solo lectura, etc.). Una vez terminado la colocaci贸n de los campos grabo el archivo PDF y ya en el programa uso ACTIVEX PDF y fusi贸n de datos usando PDFTK.EXE.
A continuaci贸n te pongo el codigo fuente con el que muestro el pdf.
// Sample showing how to manage the printer object
#include "FiveWin.ch"
#include "Utilprn.ch"
#include "hbxml.ch"
#define CLR_GRIS RGB( 226, 226, 226 )
static oWnd
//-------------------------------------------------------------------------------------------
FUNCTION Impri_Info
Local oBrush,oBrush2,oBrush3,oBrush4,oBrushImage,oBrushNubes
Local oUtils,oPrn,oFont,oFontDefault,oFontGrande, oFont08, oFont06
Local oPen,oPen2,oPen3,oPen4
Local nLinea := 0.5 , nFila := 0.5 , x ,z := 0,y, cNumFormu:=Space(10), cTFor:=Space(5), nIdF:=0
Local oXml, n
Local cType, cTag
cBmp :=".\Mapas\Mapa_Sgo.BMP"
oQryDep :=oServer:Query( "SELECT * FROM departamentos ORDER BY nom_dpto ASC" )
oQryDep:GoTop()
oQryDep:GetRow()
nmanejador:=FCREATE(".\Mapas\Mapa_SgoA.XML") //, FC_NORMAL)
bufer:='<?xml version="1.0" encoding="ISO-8859-1" ?>'+CRLF
// <?xml version="1.0" encoding="ISO-8859-1"?><mas xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/1002.xsd">'+CRLF
bufer+='<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">'+CRLF
nTexto1 :="45"
nTexto2 :="68"
nTexto3 :="125"
nTexto16 :="89"
nTexto25 :="148"
cTexto1:="INFORME DE PRODUCTOS GANADEROS"
cTexto2:="SEGUNDO TITULO"
bufer+='<fields>'+CRLF
bufer+='<field name="Texto1">'+CRLF
bufer+='<value>'+cTexto1+'</value>'+CRLF
bufer+='</field>'+CRLF
bufer+='<field name="Texto2">'+CRLF
bufer+='<value>'+cTexto2+'</value>'+CRLF
bufer+='</field>'+CRLF
/*
bufer+='<fields>'+CRLF
bufer+='<field name="Texto3">'+CRLF
bufer+='<value>'+"Linea1"+CRLF+;
"Linea2"+CRLF+;
"Linea3"+CRLF+;
"Linea4"+CRLF+'</value>'+CRLF
bufer+='</field>'+CRLF
*/
While !oQryDep:Eof()
oQryDep:GetRow()
bufer+='<field name="'+oQryDep:cod_dpto+'">'+CRLF
bufer+='<value>'+oQryDep:cod_dpto+CRLF+oQryDep:nom_dpto+'</value>'+CRLF
bufer+='</field>'+CRLF
oQryDep:Skip()
Enddo
bufer+='</fields>'+CRLF
bufer+='<f href=".\Mapas\Mapa_SgoA.pdf"/>'+CRLF
bufer+='</xfdf>'+CRLF
FWRITE(nManejador, alltrim(bufer))
FCLOSE(nManejador)
cFicheroXML:= ".\Mapas\Mapa_SgoA.XML"
cSalida:=".\Mapas\Mapa_S.PDF"
cCarga:=".\Mapas\Mapa_SgoA.PDF"
WaitRun("pdftk.exe "+cCarga+" fill_form "+cFicheroXML+" output "+ cSalida,0 )
ShellExecute( ,"open", cSalida,,,0 )
Return Nil
//-------------------------------------------------------------------------------------------
Esto tambi茅n lo uso para cargar formularios.
Yo empec茅 guiandome con este post:
viewtopic.php?f=6&t=4897
Espero que te sea de utilidad, un abrazo