Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Rellenar una plantilla en PDF (https://www.clubdelphi.com/foros/showthread.php?t=25378)

jcmolero 21-09-2005 10:19:08

Rellenar una plantilla en PDF
 
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:
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('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.


La franja horaria es GMT +2. Ahora son las 01:49:24.

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