PDA

Ver la Versión Completa : Rellenar una plantilla en PDF


jcmolero
21-09-2005, 10:19:08
Buenos Dias,
os comento mi problema. Estoy intentando hacer una aplicación Dephi, que sea capaz de coger los datos de una base de datos y llevarlos hasta una plantilla en PDF (formularios del INEM, cartas de pago, etc.) pero no tengo ni idea de cómo hacerlo. Llevo varios dias investigando pero nada, no hay forma. Os estaría muy agradecido si me pudieseis ayudar. Gracias de antemano, saludos.

Neftali [Germán.Estévez]
21-09-2005, 11:25:47
¿No te valdría generar el fichero en otro formato (RTF, DOC, TXT,... - o cualquier Generador de reports-) y luego convertirlo a PDF?

O sea tener la plantilla en algo "más accesible" que un PDF.

jcmolero
21-09-2005, 16:29:46
gracias por tu respuesta, podria hacerlo, pero esos pdf´s ya están creados por el inem, y otros organismos oficiales, por lo que debo ceñirme a su plantilla. He visto un programa (Nominaplus) que rellena esos documentos desde sus bases de datos, por eso sé que debe existir alguna manera de hacerlo, aunque la verdad es que yo no tengo ni idea. Saludos

Spynosa
26-09-2005, 09:30:28
el trabajo es un poco pesado pero yo me curre uno asi:

procedure TForm1.BitBtn1Click(Sender: TObject);
var g:file of byte;
l,cd:byte;
nombrefichero:string;
yy,mm,dd:word;
mvar:string;
procedure escribe (dato,nombrecampo:string);
var c:byte;
begin
l:=32;write(g,l);
l:=60;write(g,l);
l:=60;write(g,l);
l:=32;write(g,l);
l:=47;write(g,l);
l:=86;write(g,l);
l:=32;write(g,l);
l:=40;write(g,l);
for c:=1 to length(dato) do
begin
l:=ord(dato[c]);write(g,l);
end;
l:=41;write(g,l);
l:=47;write(g,l);
l:=84;write(g,l);
l:=32;write(g,l);
l:=40;write(g,l);
for c:=1 to length(nombrecampo) do
begin
l:=ord(nombrecampo[c]);write(g,l);
end;
l:=41;write(g,l);
l:=62;write(g,l);
l:=62;write(g,l);
end;
begin
nombrefichero:='estadisticas.pdf';
assignfile(g,'.\estadis.fdf');
rewrite(g);
l:=37;write(g,l);
l:=70;write(g,l);
l:=68;write(g,l);
l:=70;write(g,l);
l:=45;write(g,l);
l:=49;write(g,l);
l:=46;write(g,l);
l:=50;write(g,l);
l:=13;write(g,l);
l:=37;write(g,l);
l:=226;write(g,l);
l:=227;write(g,l);
l:=207;write(g,l);
l:=211;write(g,l);
l:=13;write(g,l);
l:=10;write(g,l);
l:=49;write(g,l);
l:=32;write(g,l);
l:=48;write(g,l);
l:=32;write(g,l);
l:=111;write(g,l);
l:=98;write(g,l);
l:=106;write(g,l);
l:=13;write(g,l);
l:=60;write(g,l);
l:=60;write(g,l);
l:=32;write(g,l);
l:=13;write(g,l);
l:=47;write(g,l);
l:=70;write(g,l);
l:=68;write(g,l);
l:=70;write(g,l);
l:=32;write(g,l);
l:=60;write(g,l);
l:=60;write(g,l);
l:=32;write(g,l);
l:=47;write(g,l);
l:=70;write(g,l);
l:=105;write(g,l);
l:=101;write(g,l);
l:=108;write(g,l);
l:=100;write(g,l);
l:=115;write(g,l);
l:=32;write(g,l);
l:=91;write(g,l);

//escribe('Si','a2');
escribe(edit1.text,'b1');
decodedate(actual.date,yy,mm,dd);
mvar:=inttostr(dd);
if length(mvar) = 1 then
begin
escribe('0','b2d');escribe(mvar,'b2m');
end
else begin escribe(mvar[1],'b2d');escribe(mvar[2],'b2m');
end;
//**********
mvar:=inttostr(mm);
if length(mvar) = 1 then
begin
escribe('0','b2m1');escribe(mvar,'b2m2');
end
else begin escribe(mvar[1],'b2m1');escribe(mvar[2],'b2m2');
end;
//*******
mvar:=inttostr(yy);
escribe(mvar[1],'b2a1');escribe(mvar[2],'b2a2');
escribe(mvar[3],'b2a3');escribe(mvar[4],'b2a4');
//*******
decodedate(f1.date,yy,mm,dd);
mvar:=inttostr(dd);
if length(mvar) = 1 then
begin
escribe('0','b21');escribe(mvar,'b22');
end
else begin escribe(mvar[1],'b21');escribe(mvar[2],'b22');
end;
//**********
mvar:=inttostr(mm);
if length(mvar) = 1 then
begin
escribe('0','b23');escribe(mvar,'b24');
end
else begin escribe(mvar[1],'b23');escribe(mvar[2],'b24');
end;
//*******
mvar:=inttostr(yy);
escribe(mvar[1],'b25');escribe(mvar[2],'b26');
escribe(mvar[3],'b27');escribe(mvar[4],'b28');
//segundafecha
if chf.Checked then
begin
decodedate(f2.date,yy,mm,dd);
mvar:=inttostr(dd);
if length(mvar) = 1 then
begin
escribe('0','b29');escribe(mvar,'b210');
end
else begin escribe(mvar[1],'b29');escribe(mvar[2],'b210');
end;
//**********
mvar:=inttostr(mm);
if length(mvar) = 1 then
begin
escribe('0','b211');escribe(mvar,'b212');
end
else begin escribe(mvar[1],'b211');escribe(mvar[2],'b212');
end;
//*******
mvar:=inttostr(yy);
escribe(mvar[1],'b213');escribe(mvar[2],'b214');
escribe(mvar[3],'b215');escribe(mvar[4],'b216');

end;
//fin segundafecha
try
mvar:=edit2.Text;
escribe(mvar[1],'b217');escribe(mvar[2],'b218');
escribe(mvar[4],'b219');escribe(mvar[5],'b220');
except
// MessageDlg('Error en la fecha', mtWarning, [], 0);
end;
if che.Checked then
begin
try
mvar:=edit3.Text;
escribe(mvar[1],'b221');escribe(mvar[2],'b222');
escribe(mvar[4],'b223');escribe(mvar[5],'b224');
except
end;
end;
escribe(edit4.text,'e3');
if t1.Checked then escribe('Si','1310');
if t2.Checked then escribe('Si','1322');
if t3.Checked then escribe('Si','1324');
if t4.Checked then escribe('Si','1380');
if c1.Checked then escribe('Si','g2');
if c2.Checked then escribe('Si','g1');
escribe('Si','h1');
escribe(edit5.text,'dni');
l:=32;write(g,l);
l:=13;write(g,l);
l:=93;write(g,l);
l:=32;write(g,l);
l:=13;write(g,l);
l:=47;write(g,l);
l:=70;write(g,l);
l:=32;write(g,l);
l:=40;write(g,l);
//********
for cd:=1 to length(nombrefichero) do
begin
l:=ord(nombrefichero[cd]);write(g,l);
end;
//********
l:=41;write(g,l);
l:=62;write(g,l);
l:=62;write(g,l);
l:=32;write(g,l);
l:=13;write(g,l);
l:=62;write(g,l);
l:=62;write(g,l);
l:=32;write(g,l);
l:=13;write(g,l);
l:=101;write(g,l);
l:=110;write(g,l);
l:=100;write(g,l);
l:=111;write(g,l);
l:=98;write(g,l);
l:=106;write(g,l);
l:=13;write(g,l);
l:=116;write(g,l);
l:=114;write(g,l);
l:=97;write(g,l);
l:=105;write(g,l);
l:=108;write(g,l);
l:=101;write(g,l);
l:=114;write(g,l);
l:=13;write(g,l);
l:=60;write(g,l);
l:=60;write(g,l);
l:=13;write(g,l);
l:=47;write(g,l);
l:=82;write(g,l);
l:=111;write(g,l);
l:=111;write(g,l);
l:=116;write(g,l);
l:=32;write(g,l);
l:=49;write(g,l);
l:=32;write(g,l);
l:=48;write(g,l);
l:=32;write(g,l);
l:=82;write(g,l);
l:=32;write(g,l);
l:=13;write(g,l);
l:=13;write(g,l);
l:=62;write(g,l);
l:=62;write(g,l);
l:=13;write(g,l);
l:=37;write(g,l);
l:=37;write(g,l);
l:=69;write(g,l);
l:=79;write(g,l);
l:=70;write(g,l);
l:=13;write(g,l);

closefile(g);
ShellExecute(Form1.Handle,nil,PChar('.\estadis.fdf'),'','',SW_SHOWNORMAL);

end;


espero que te sirva.