el trabajo es un poco pesado pero yo me curre uno asi:
Código Delphi
[-]
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(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');
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;
try
mvar:=edit2.Text;
escribe(mvar[1],'b217');escribe(mvar[2],'b218');
escribe(mvar[4],'b219');escribe(mvar[5],'b220');
except
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.