PDA

Ver la Versión Completa : Interactuar con campos en documento pdf


jhges
06-07-2007, 17:36:44
Buenas tardes

Tengo un documento pdf que es una plantilla de una carta, en donde tengo un par de campos CLIENTE, DIRECCION, ETC...., tengo que rellenar esos campos de forma manual

Sabeis si desde delphi se puede cargar esos campos con datos de una bases de datos y pasarselos al documento de forma automatica, tipo combinar con word. Uso un documento pdf por que el documento esta escaneado, tiene mucha imagenes, y yo lo que he hech es insertar campos en algunas posiciones.

Trabajo con delphi 6. Tengo un activeX que es el TPDF pero por lo que he visto no puedo interactuar con los campos.

Saludos y gracias

gabrielkc
06-07-2007, 19:35:34
mmm no es muy ortodoxo pero puedes emular que envias teclas al Acrobat Reader.



procedure PostKeyEx32(Key: Word; const Shift: TShiftState; SpecialKey: Boolean);

type
TShiftKeyInfo = record
shift: Byte;
vkey : Byte;
end;

byteset = set of 0..7;
const
ShiftKeys: array [1..3] of TShiftKeyInfo =
((shift: Ord(ssCtrl); vkey: VK_CONTROL ),
(shift: Ord(ssShift); vkey: VK_SHIFT ),
(shift: Ord(ssAlt); vkey: VK_MENU ));
var
flag: DWORD;
bShift: ByteSet absolute shift;
i: Integer;
begin
for i := 1 to 3 do
begin
if ShiftKeys[i].Shift in bShift then
keybd_event( shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), 0, 0);
end;
if SpecialKey then
flag := KEYEVENTF_EXTENDEDKEY
else
flag := 0;

keybd_event( key, MapvirtualKey( key, 0 ), flag, 0 );
flag := flag or KEYEVENTF_KEYUP;
keybd_event( key, MapvirtualKey( key, 0 ), flag, 0 );

for i := 3 downto 1 do
begin
if ShiftKeys[i].Shift in bShift then
keybd_event( ShiftKeys[i].vKey, MapVirtualKey(ShiftKeys[i].vKey, 0), KEYEVENTF_KEYUP, 0);
end;
end; { PostKeyEx32 }



con el procedimiento anterior envias teclas a la ventana activa. Aunque si el usuario cambia la pantalla activa pues se enviarian a otra aplicación. Igual está el código por si te sirve

afxe
18-07-2007, 12:11:14
¿Alguna otra solución? También estoy interesado en este tema y esperaba que alguien aportara algo más (que no es que sea poco lo de enviar teclas).

Ha llegado a mis manos los fuentes en C++ de cómo pasar un PDF a postscript y rellenar dichos campos, pero es un poco lioso: http://www.koders.com/cpp/fidEB54D8E07F1594EB31A3C1FB5CBADABF2E3E7427.aspx

Seguiré buscando.