Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Interactuar con campos en documento pdf (https://www.clubdelphi.com/foros/showthread.php?t=45549)

jhges 06-07-2007 17:36:44

Interactuar con campos en documento pdf
 
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.

Código Delphi [-]

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/fidEB54D8E...F2E3E7427.aspx

Seguiré buscando.


La franja horaria es GMT +2. Ahora son las 18:31:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi