Toolmaker Produkt-Dokumentation

pdf4i Musterprogramme

Inhaltsübersicht


Das Musterprogramm FORMINV


Im ersten Musterprogramm wird ein Rechnungsformular erzeugt, das für die Rechnungsschreibung als Schablone dient. Das zweite Programm füllt die Rechnungsdaten in diese Schablone. Die Quellen stehen in DIRWEB/QRPGLESRC/FORMINV bzw. INVOICE.

Rechnungsformular:

FORMINV-Quelle des Formulars
    ‚ **********************************************************************************************
      * Program       :ˆFormInv
      * Descriptions  :ˆForm of invoice
      * Programmer    :ˆToolmaker
      * Creation Date :ˆ01.07.2014
    ‚ **********************************************************************************************
    ˆ * H E A D E R - S P E C I F I C A T I O N S
    ‚ **********************************************************************************************
     H/COPY Qcpylesrc,H_SPECSPDF
    ‚ **********************************************************************************************
    ˆ * F I L E   S P E C I F I C A T I O N S
    ‚ **********************************************************************************************
    ‚ **********************************************************************************************
    š *  P R O T O T Y P I N G  /  C O P Y   M E M B E R
    ‚ **********************************************************************************************
     D/Include Qprolesrc,pdfsrvpgm
    ‚ *
    ‚ **********************************************************************************************
    ˆ * D E F I N I T I O N   G L O B A L   V A R I A B L E S
    ‚ **********************************************************************************************
     d Handle          s               *
     d Font            s            256    inz('Helvetica-Bold') varying
     d Encoding        s            256    inz('unicode') varying
     d FontOpt         s            256    inz(' ')
     d CrtOpt          s            256    inz('fontname=Helvetica +
     d                                     fontsize=8 encoding=unicode +
     d                                     fillcolor={gray 0} +
     d                                     alignment=justify')
     d Fontsize        s              6s 0 inz(08)
     d Ftext           s           4096    inz('Toolmaker Advanced +
     d                                     Efficiency GmbH')
     d Ftext1          s           4096    inz('Westendstrasse 34')
     d Ftext2          s           4096    inz('86916 Kaufering')
     d Ftext3          s           4096    inz('Tel.: 0049 8191 968 0')
     d sender          s           4096    inz('Toolmaker Advanced Efficiency +
     d                                     GmbH, Westendstr. 34, +
     d                                     86916 Kaufering')
     d TxtKdnr         s           4096    inz('Kundennummer')
     d TxtRenr         s           4096    inz('Rechnungsnummer')
     d Txtdate         s           4096    inz('Datum')
     d AText           s           4096    inz('Der Rechnungsbetrag ist +
     d                                     innerhalb von 14 Tagen netto +
     d                                     zahlbar. Die Produkte bleiben bis +
     d                                     zur vollständigen Bezahlung +
     d                                     unser Eigentum. Es gelten unsere +
     d                                     allgemeinen Geschäftsbedingungen.')
    ‚ **********************************************************************************************
    ˆ * M A I N   P R O G R A M
    ‚ **********************************************************************************************
    ‚ /Free
            Handle=PDF_CreateDoc('(*license='' '') +
                                  (*Searchpath= +
              /Toolmaker/DirectWEB/htdocs/pdf4iexamples/fonts) +
                                  (*Docname   = +
              /Toolmaker/DirectWEB/htdocs/pdf4iexamples/resdoc/Testform.pdf)' +
                                 '(*Creator   =RPG) +
                                  (*Author    =Max Maus) +
                                  (*dimension =mm) +
                                  (*direction =topdown) +
                                  (*Title     =Header for documents)');
            PDF_Image(Handle:'(*imgtype=auto) +
                                  (*image    = +
             /Toolmaker/DirectWEB/htdocs/pdf4iexamples/images/tm_logo.jpg) +
                                  (*imgfopt  =scale 0.3) +
                                  (*imgx      =140) +
                                  (*imgy      =20)');
            PDF_DrawLine(Handle:'(*strokewidth=2) +
                                  (*StrokeColor=blue) +
                                  (*Strokefromx=008) +
                                  (*Strokefromy=25) +
                                  (*Stroketox  =205) +
                                  (*Stroketoy  =25)');
            PDF_TextLine(Handle:'(*singletext='+sender+')' +
                                 '(*textx    =25) +
                                  (*texty    =60) +
                                  (*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =06)');
            PDF_TextLine(Handle:'(*singletext='+ftext+')' +
                                 '(*textx    =150) +
                                  (*texty    =60) +
                                  (*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =08)');
            PDF_TextLine(Handle:'(*singletext='+ftext1+')' +
                                 '(*textx    =150) +
                                  (*texty    =65) +
                                  (*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =08)');
            PDF_TextLine(Handle:'(*singletext='+ftext2+')' +
                                 '(*textx    =150) +
                                  (*texty    =70) +
                                  (*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =08)');
            PDF_TextLine(Handle:'(*singletext='+ftext3+')' +
                                 '(*textx    =150) +
                                  (*texty    =75) +
                                  (*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =08)');
            PDF_DrawBox(Handle:'(*strokewidth=1) +
                                  (*rectx      =20) +
                                  (*recty      =130) +
                                  (*StrokeColor= ) +
                                  (*rectwidth  =170) +
                                  (*rectheight =20)');
            PDF_TextLine(Handle:'(*singletext='+TxtKdnr+')' +
                                 '(*textx    =25) +
                                  (*texty    =120) +
                                  (*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            PDF_TextLine(Handle:'(*singletext='+TxtRenr+')' +
                                 '(*textx    =80) +
                                  (*texty    =120) +
                                  (*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            PDF_TextLine(Handle:'(*singletext='+TxtDate+')' +
                                 '(*textx    =150) +
                                  (*texty    =120) +
                                  (*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            PDF_TextFlow(Handle:'(*flowtext='+AText +')' +
                                 '(*flowlux  =20) +
                                  (*flowluy  =270) +
                                  (*flowrdx  =190) +
                                  (*flowrdy  =285) +
                                  (*flowwidth =0) +
                                  (*flowheight=0) +
                                  (*flowcrtopt='+crtopt +')');
            PDF_TextLine(Handle:'(*singletext=Seite -) +
                                   *textx    =100) +
                                  (*texty    =290) +
                                  (*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =08)');
            PDF_CloseDoc(Handle:' ');
            *Inlr=*on;
    ‚ /End-free 


 
Das mit diesem Programm erzeugte PDF-Dokument sieht so aus:


Das Musterprogramm INVOICE

Das folgende Programm verwendet das zuvor erstellte PDF-Dokument als Schablone und füllt die Rechnungsdaten ein. Kundendaten und Artikel sind zur besseren Lesbarkeit als Konstante bzw. in einer Datenstruktur dargestellt und nicht wie üblich einer Datenbank entnommen.

Hinweis: Wenn anstelle einer jpg-Datei eine PDF-Datei als Vorlage zur Erstellung einer neuen PDF-Datei dienen soll, ist die PDFLIB02-Lizenz erforderlich. Siehe Frage Nr 5. bei den Häufig gestellten Fragen.

PDFLIB01   PDF-Dokumente erzeugen

PDFLIB02   PDF-Dokumente erzeugen mit Nutzung bereits vorhandener PDF-Dokumente

Variante 1 - Alle Rechnungen in einem PDF-Dokument

Alle Rechnungen werden in einer Datei mit Namen ‚Invoice Tagesdatum' gespeichert. Wenn jede Rechnung in eine eigene Datei gespeichert werden soll, kann die Variante 2 als Muster verwendet werden.

Programm INVOICE - RPG-Quelle
    ‚ **********************************************************************************************
      * Program       :ˆInvoice
      * Descriptions  :ˆSample invoice
      * Programmer    :ˆGerd Schramm
      * Creation Date :ˆ01.07.2014
    ‚ **********************************************************************************************
    ˆ * H E A D E R - S P E C I F I C A T I O N S
    ‚ **********************************************************************************************
     H/COPY Qcpylesrc,H_SPECSPDF
    ‚ **********************************************************************************************
    ˆ * F I L E   S P E C I F I C A T I O N S
    ‚ **********************************************************************************************
    ‚ **********************************************************************************************
    š *  P R O T O T Y P I N G  /  C O P Y   M E M B E R
    ‚ **********************************************************************************************
     D/COPY qprolesrc,pdfsrvpgm
    ‚ *
    ‚ **********************************************************************************************
    ˆ * D E F I N I T I O N   G L O B A L   V A R I A B L E S
    ‚ **********************************************************************************************
     d Handle          s               *
     d Adr1            s             30    inz('Musterkunde') varying
     d Adr2            s             30    inz('Musterstrasse') varying
     d Adr3            s             30    inz('XXXXX Ort') varying
     d Font            s            256    inz('Helvetica-Bold') varying
     d Encoding        s            256    inz('unicode') varying
     d FontOpt         s            256    inz(' ')
     d CrtOpt          s            256    inz('fontname=Helvetica +
     d                                     fontsize=8 encoding=unicode +
     d                                     fillcolor={gray 0} +
     d                                     alignment=justify')
     d CrtOptr         s            256    inz('fontname=Helvetica +
     d                                     fontsize=8 encoding=unicode +
     d                                     fillcolor={gray 0} +
     d                                     alignment=right')
     d CurDat          s               d   datfmt(*eur)
     d Today           s             10
     d Invnbr          s             10i 0
     d InvnbrA         s              5
     d line            s             10i 0
     d x               s             10i 0
     d linea           s              5
     d savekdnr        s              5
     d pricea          s             12
     d totala          s             12
     d total           s              9  2
     d Fontsize        s              6s 0 inz(12)
     d Stext           s           4096    inz('Überschrift' )
     d Stext2          s           4096    inz('Farbbox' )
     d Txtsum          s           4096    inz('Rechnungsbetrag')
     d                                     varying
     d TxtEUR          s           4096    inz('EUR')
     d                                     varying
     D DSItem          DS                  Qualified
     D                               10I 0          inz(1)
     D                                5A   Varying  inz('12345')
     D                               30A   Varying  inz('Software product 1')
     D                                9  2 inz(2500,00)
     D                               10I 0          inz(2)
     D                                5A   Varying  inz('12345')
     D                               30A   Varying  inz('Software product 2')
     D                                9  2 inz(3000,00)
     D                               10I 0          inz(3)
     D                                5A   Varying  inz('12345')
     D                               30A   Varying  inz('Software product 3')
     D                                9  2 inz(4000,00)
     D                               10I 0          inz(4)
     D                                5A   Varying  inz('12346')
     D                               30A   Varying  inz('Software product 1')
     D                                9  2 inz(1500,00)
     D                               10I 0          inz(5)
     D                                5A   Varying  inz('12346')
     D                               30A   Varying  inz('Software product 3')
     D                                9  2 inz(6000,00)
     D   Arr                               Dim(5)   Overlay(DSItem)
     D    Num                        10I 0          Overlay(Arr)
     D    Kdnr                        5A   Varying  Overlay(Arr: *Next)
     D    Item                       30A   Varying  Overlay(Arr: *Next)
     D    Price                       9  2 Overlay(Arr: *Next)

    ‚ **********************************************************************************************
    ˆ * M A I N   P R O G R A M
    ‚ **********************************************************************************************
    ‚ /Free
            CurDat=%date();
            today=%char(curdat);

          Handle=PDF_CreateDoc('(*license='' '') +
                                (*Searchpath=/Toolmaker/Fonts) +
                                (*Docname   =/home/gsc/Invoice '+Today+'.pdf)' +
                               '(*Creator   =RPG) +
                                (*Author    =Gerd Schramm) +
                                (*pdidoc    =forminv.pdf) +
                                (*dimension =mm) +
                                (*direction =topdown) +
                                (*pagenbr   =0) +
                                (*pagex     =110) +
                                (*pagey     =290) +
                                (*Title     =Test invoice)');
         For x=1 to 5;
          if dsitem.kdnr(x)<>savekdnr;
           if savekdnr<>*blank;
            exsr Sum;
            PDF_NextPage(Handle:'(*pagenbr=0)');
           endif;
            invnbr+=1;
            line   =140;
            invnbra=%char(invnbr);
            savekdnr=dsitem.kdnr(x);

            PDF_TextLine(Handle:'(*singletext='+adr1+')' +
                                 '(*textx    =25) +
                                  (*texty    =70) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            PDF_TextLine(Handle:'(*singletext='+adr2+')' +
                                 '(*textx    =25) +
                                  (*texty    =75) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            PDF_TextLine(Handle:'(*singletext='+adr3+')' +
                                 '(*textx    =25) +
                                  (*texty    =85) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            PDF_TextLine(Handle:'(*singletext='+dsitem.kdnr(x)+')' +
                                 '(*textx    =60) +
                                  (*texty    =120) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            PDF_TextLine(Handle:'(*singletext='+invnbra+')' +
                                 '(*textx    =120) +
                                  (*texty    =120) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            PDF_TextLine(Handle:'(*singletext='+today+')' +
                                 '(*textx    =165) +
                                  (*texty    =120) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
           endif;

            line+=10;
            linea=%char(line);
            total+=dsitem.price(x);
            pricea=%editw(dsitem.price(x):' .   .   ,  ');

            PDF_TextLine(Handle:'(*singletext=1)  +
                                  (*textx    =25) +
                                  (*texty    ='+linea+')' +
                                 '(*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            PDF_TextLine(Handle:'(*singletext='+dsitem.item(x)+')' +
                                 '(*textx    =35) +
                                  (*texty    ='+linea+')' +
                                 '(*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            PDF_TextLine(Handle:'(*singletext='+txteur+')' +
                                 '(*textx    =130) +
                                  (*texty    ='+linea+')' +
                                 '(*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            PDF_TextLine(Handle:'(*singletext='+pricea+')' +
                                 '(*textx    =140) +
                                  (*texty    ='+linea+')' +
                                 '(*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
         Endfor;
            exsr sum;
            PDF_CloseDoc(Handle:' ');
            *Inlr=*on;
    ‚
            begsr sum;
            line+=10;
            linea=%char(line);
            totala=%editw(total:' .   .   ,  ');

            PDF_TextLine(Handle:'(*singletext=------------) +
                                  (*textx    =140) +
                                  (*texty    ='+linea+')' +
                                 '(*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            line+=10;
            linea=%char(line);
            PDF_TextLine(Handle:'(*singletext='+txtsum+')' +
                                 '(*textx    =35) +
                                  (*texty    ='+linea+')' +
                                 '(*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            PDF_TextLine(Handle:'(*singletext='+txteur+')' +
                                 '(*textx    =130) +
                                  (*texty    ='+linea+')' +
                                 '(*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            PDF_TextLine(Handle:'(*singletext='+totala+')' +
                                 '(*textx    =140) +
                                  (*texty    ='+linea+')' +
                                 '(*textoption =fillcolor={gray 0.5}) +
                                  (*font     =arial) +
                                  (*fontencoding=unicode) +
                                  (*fontsize =10)');
            total =*zero;
            endsr;
    ‚ /End-free 


Variante 2 - Pro Rechnung ein PDF-Dokument

Programmname INVOICEN. Eine Datei mit Namen 'Invoice <rechnungsnr>' pro Rechnung.

Die Zeilen 87-112 von INVOICE aus Variante 1 ersetzt werden.

Programm INVOICEN - Auszug aus der RPG-Quelle
            CurDat=%date();
            today=%char(curdat);

         For x=1 to 5;
          if dsitem.kdnr(x)<>savekdnr;
           if savekdnr<>*blank;
            exsr Sum;
            PDF_CloseDoc(Handle:' ');
           endif;
            invnbr+=1;
            line   =140;
            invnbra=%char(invnbr);
            savekdnr=dsitem.kdnr(x);

          Handle=PDF_CreateDoc('(*license='' '') +
                              (*Searchpath=/Toolmaker/Fonts) +
                              (*Docname   =/home/gsc/Invoice '+invnbra+'.pdf)' +
                             '(*Creator   =RPG) +
                              (*Author    =Gerd Schramm) +
                              (*pdidoc    =forminv.pdf) +
                              (*dimension =mm) +
                              (*direction =topdown) +
                              (*pagenbr   =0) +
                              (*pagex     =110) +
                              (*pagey     =290) +
                              (*Title     =Test invoice)');


Die komplette Musterrechnung





Das Musterprogramm FERDINV


Das Musterprogramm FERDINV erstellt ein leeres PDF mit integriertem ZUGFeDR XML-Teil.

Quelle FERDINV - RPG-Code
0001.00***************************************************************************                         
0002.00  * Program       : Ferdinv                                                                                                 
0003.00  * Descriptions  : Sample FeRD document                                                                                    
0004.00  * Programmer    : Toolmaker
0005.00  * Creation Date : 30.09.2015                                                                                              
0006.00***************************************************************************                           
0007.00  * H E A D E R - S P E C I F I C A T I O N S                                                                               
0008.00***************************************************************************                           
0009.00 H/COPY Qcpylesrc,H_SPECSPDF                                                                                                
0010.00***************************************************************************                           
0011.00  * F I L E   S P E C I F I C A T I O N S                                                                                   
0012.00***************************************************************************                            
0013.00***************************************************************************                           
0014.00  *  P R O T O T Y P I N G  /  C O P Y   M E M B E R                                                                        
0015.00***************************************************************************                            
0016.00 D/COPY qprolesrc,pdfsrvpgm                                                                                                 
0017.00  *                                                                                                                         
0018.00***************************************************************************                            
0019.00  * D E F I N I T I O N   G L O B A L   V A R I A B L E S                                                                   
0020.00***************************************************************************                            
0021.00 d Handle          s               *                                                                                        
0022.00 d renra           s             10    inz('12345')                                                                         
0023.00 d datea           s              8    inz('20150929')                                                                      
0024.00 d sellername      s             50    inz('Mustermann GmbH')                                                               
0025.00 d sellerline1     s             50    inz('Musterstrasse 7')                                                               
0026.00 d sellercity      s             50    inz('München')                                                                       
0027.00 d sellerplz       s              5    inz('80000')                                                                         
0028.00 d sellercountry   s              3    inz('DE')                                                                            
0029.00 d buyername       s             50    inz('Einkauf AG')                                                                    
0030.00 d buyerline1      s             50    inz('Einkaufstrasse 9')                                                              
0031.00 d buyercity       s             50    inz('Hamburg')                                                                       
0032.00 d buyerplz        s              5    inz('20000')                                                                      
0033.00 d buyercountry    s              3    inz('DE')                                                                            
0034.00 d curr            s              3    inz('EUR')                                                                           
0035.00 d vatid           s             20    inz('DE123456789')                                                                
0036.00 d vatpera         s              4    inz('19.0')                                                                          
0037.00 d vatamounta      s             15    inz('6,94')                                                                          
0038.00 d Termtext        s            256    inz('Zahlbar netto innerhalb von -                                                   
0039.00 d                                     14 Tagen')                                                                           
0040.00 d totala          s             15    inz('36,50')                                                                         
0041.00 d gtotala         s             15    inz('43,44')                                                                         
0042.00 d line1           s             15    inz('1')                                                                             
0043.00 d itemname1       s             15    inz('Äpfel')                                                                         
0044.00 d quant1          s             15    inz('30')                                                                            
0045.00 d amount1         s             15    inz('16,50')                                                                         
0046.00 d line2           s             15    inz('2')                                                                             
0047.00 d itemname2       s             15    inz('Birnen')                                                                        
0048.00 d quant2          s             15    inz('20')                                                                            
0049.00 d amount2         s             15    inz('20,00')                                                                         
0050.00                                                                                                                            
0051.00***************************************************************************                            
0052.00  * M A I N   P R O G R A M                                                                                                 
0053.00***************************************************************************                            
0054.00  /Free                                                                                                                     
0055.00                                                                                                                            
0056.00      Handle=PDF_CreateDoc('(*license='' '') +                                                                              
0057.00                          (*Searchpath=/Toolmaker/Fonts) +                                                                  
0058.00                          (*Docname   =/tmp/ferdempty.pdf)  +                                                               
0059.00                          (*Creator   =RPG) +                                                                               
0060.00                          (*Author    =Gerd Schramm) +                                                                   
0061.00                          (*dimension =mm) +                                                                                
0062.00                          (*direction =topdown) +                                                                           
0063.00                          (*docoptions=pdfa=PDF/A-3b metadata={filename={+                                                  
0064.00                          ZUGFeRD_extension_schema.xmp}}) +                                                                 
0065.00                          (*Title     =Test FeRD)');                                                                        
0066.00        PDF_FERDDOC('(*Docnbr         ='+renra+') +                                                                        
0067.00                     (*Docname        =/tmp/ferdempty.pdf)  +                                                               
0068.00                     (*Doctype        =380) +                                                                               
0069.00                     (*Docjjjjmmdd    ='+datea+') +                                                                         
0070.00                     (*Sellername     ='+Sellername+') +                                                                    
0071.00                     (*Sellerline1    ='+sellerline1+') +                                                                   
0072.00                     (*SellerPostcode ='+sellerplz+') +                                                                     
0073.00                     (*Sellercity     ='+sellercity+') +                                                                    
0074.00                     (*Sellercountry  ='+sellercountry+') +                                                                 
0075.00                     (*Buyername      ='+buyername+') +                                                                     
0076.00                     (*Buyerline1     ='+buyerline1+') +                                                                    
0077.00                     (*BuyerPostcode  ='+buyerplz+') +                                                                      
0078.00                     (*Buyercity      ='+buyercity+') +                                                                     
0079.00                     (*Buyercountry   ='+buyercountry+') +                                                                  
0080.00                     (*Currency       ='+curr+') +                                                                          
0081.00                     (*Vatid          ='+vatid+') +                                                                         
0082.00                     (*Vatpercent     ='+Vatpera+') +                                                                       
0083.00                     (*Vatamount      ='+Vatamounta+') +                                                                    
0084.00                     (*Payterm        ='+Termtext+') +                                                                      
0085.00                     (*Total          ='+totala+') +                                                                        
0086.00                     (*Grandtotal     ='+gtotala+')');                                                                      
0087.00        PDF_FERDITEM('(*Docnbr         ='+renra+') +                                                                        
0088.00                     (*Docname        =/tmp/ferdempty.pdf)  +                                                               
0089.00                     (*Doctype        =380) +                                                                               
0090.00                     (*Docjjjjmmdd    ='+datea+') +                                                                         
0091.00                     (*itemline       ='+line1+') +                                                                         
0092.00                     (*itemname       ='+itemname1+') +                                                                     
0093.00                     (*itemquantity   ='+quant1+') +                                                                        
0094.00                     (*itemamount     ='+amount1+')');                                                                      
0095.00        PDF_FERDITEM('(*Docnbr         ='+renra+') +                                                                     
0096.00                      (*Docname        =/tmp/ferdempty.pdf)  +                                                              
0097.00                      (*Doctype        =380) +                                                                              
0098.00                      (*Docjjjjmmdd    ='+datea+') +                                                                        
0099.00                      (*itemline       ='+line2+') +                                                                        
0100.00                      (*itemname       ='+itemname2+') +                                                                    
0101.00                      (*itemquantity   ='+quant2+') +                                                                       
0102.00                      (*itemamount     ='+amount2+')');                                                                     
0103.00        PDF_CloseDoc(Handle:' ');                                                                                           
0104.00        *Inlr=*on;                                                                                                          
0105.00                                                                                                                            
0106.00  /End-free                                                                                                             



Das Musterprogramm FERDINVPR

Dieses Programm erzeugt das lesbare PDF mit XML-Datei.

Quelle FERDINVPR - RPG-Code
0001.00***************************************************************************                        0002.00  * Program       : FeRDinvpr                                                                                               
0003.00  * Descriptions  : Sample invoice FeRD with printable pdf                                                                  
0004.00  * Programmer    : Toolmaker                                                                                               
0005.00  * Creation Date : 17.11.2015                                                                                              
0006.00***************************************************************************                            
0007.00  * H E A D E R - S P E C I F I C A T I O N S                                                                               
0008.00***************************************************************************                            
0009.00 H/COPY Qcpylesrc,H_SPECSPDF                                                                                                
0010.00***************************************************************************                           
0011.00  * F I L E   S P E C I F I C A T I O N S                                                                                   
0012.00***************************************************************************                            
0013.00***************************************************************************                           
0014.00  *  P R O T O T Y P I N G  /  C O P Y   M E M B E R                                                                        
0015.00***************************************************************************                           
0016.00 D/include qprolesrc,pdfsrvpgm                                                                                              
0017.00                                                                                                  
0018.00  *                                                                                                                         
0019.00***************************************************************************                           
0020.00  * D E F I N I T I O N   G L O B A L   V A R I A B L E S                                                                   
0021.00***************************************************************************                           
0022.00 d Handle          s               *                                                                                        
0023.00 d sellername      s             50    inz('Toolmaker Advanced Efficiency -                                                 
0024.00 d                                     GmbH')                                                                               
0025.00 d sellerline1     s             50    inz('Westendstrasse 34')                                                             
0026.00 d sellercity      s             50    inz('Kaufering')                                                                     
0027.00 d sellerplz       s              5    inz('86916')                                                                         
0028.00 d sellercountry   s              3    inz('DE')                                                                            
0029.00 d buyername       s             50    inz('Mustermann GmbH')                                                               
0030.00 d buyerline1      s             50    inz('Musterstrasse 34')                                                              
0031.00 d buyercity       s             50    inz('München')                                                                       
0032.00 d buyerplz        s              5    inz('80000')                                                                         
0033.00 d buyercountry    s              3    inz('DE')                                                                            
0034.00 d buyerkdnr       s              5    inz('12345')                                                                         
0035.00 d invnbra         s              5    inz('54321')                                                                         
0036.00 d curr            s              3    inz('EUR')                                                                           
0037.00 d vatid           s             20    inz('DE123456789')                                                                   
0038.00 d vattext         s             30    inz('Mehrwertsteuer 19.0 %')                                                      
0039.00 d vatpera         s              5    inz('19,00')                                                                         
0040.00 d vatamounta      s             15                                                                                         
0041.00 d vatpercent      s              4  2 inz(19,00)                                                                           
0042.00 d vatamount       s              9  2                                                                                      
0043.00 d Termtext        s            256    inz('Der Rechnungsbetrag ist inn-                                                    
0044.00 d                                     erhalb von 14 Tagen netto zahlba-                                                    
0045.00 d                                     r. Die Produkte bleiben bis zur  -                                                   
0046.00 d                                     vollständeigen Bezahlung unser E-                                                    
0047.00 d                                     igentum. Es gelten unsere allgem-                                                    
0048.00 d                                     einen Geschäftsbedingungen.')                                                        
0049.00 d total           s              9  2                                                                                      
0050.00 d gtotal          s              9  2                                                                                      
0051.00 d totala          s             15                                                                                         
0052.00 d gtotala         s             15                                                                                         
0053.00 d CurDat          s               d   datfmt(*eur)                                                                         
0054.00 d Today           s             10                                                                                         
0055.00 d date8           s              8                                                                                         
0056.00 d Invnbr          s             10i 0                                                                                      
0057.00 d line            s             10i 0                                                                                      
0058.00 d x               s             10i 0                                                                                      
0059.00 d xa              s              3                                                                                         
0060.00 d linea           s              5                                                                                         
0061.00 d pricea          s             12                                                                                         
0062.00 d Fontsize        s              6s 0 inz(12)                                                                           
0063.00 d Stext           s           4096    inz('Überschrift' )                                                                  
0064.00 d Stext2          s           4096    inz('Farbbox' )                                                                      
0065.00 d Txtsum          s           4096    inz('Rechnungsbetrag netto')                                                         
0066.00 d gtotaltext      s           4096    inz('Rechnungsbetrag brutto')                                                        
0067.00 d*                                                                                                                      
0068.00 D DSItem          DS                  Qualified                                                                            
0069.00 D                               10I 0          inz(1)                                                                   
0070.00 D                               30A   Varying  inz('Software product 1')                                                   
0071.00 D                               15A   Varying  inz('1')                                                                    
0072.00 D                                9  2 inz(1500,00)                                                                         
0073.00 D                               10I 0          inz(2)                                                                      
0074.00 D                               30A   Varying  inz('Software product 2')                                                
0075.00 D                               15A   Varying  inz('1')                                                                 
0076.00 D                                9  2 inz(3000,00)                                                                         
0077.00 D                               10I 0          inz(3)                                                                      
0078.00 D                               30A   Varying  inz('Software product 3')                                                   
0080.00 D                                9  2 inz(4000,00)                                                                         
0081.00 D                               10I 0          inz(4)                                                                      
0082.00 D                               30A   Varying  inz('Software product 4')                                                   
0083.00 D                               15A   Varying  inz('2')                                                                    
0084.00 D                                9  2 inz(3000,00)                                                                         
0085.00 D                               10I 0          inz(5)                                                                      
0086.00 D                               30A   Varying  inz('Software product 5')                                                   
0087.00 D                               15A   Varying  inz('1')                                                                    
0088.00 D                                9  2 inz(4000,00)                                                                         
0089.00 D                               10I 0          inz(6)                                                                      
0090.00 D                               30A   Varying  inz('Software product 6')                                                   
0091.00 D                               15A   Varying  inz('3')                                                                    
0092.00 D                                9  2 inz(6000,00)                                                                         
0093.00 D                               10I 0          inz(7)                                                                      
0094.00 D                               30A   Varying  inz('Software product 7')                                                   
0095.00 D                               15A   Varying  inz('1')                                                                    
0096.00 D                                9  2 inz(1300,00)                                                                         
0097.00 D                               10I 0          inz(8)                                                                      
0098.00 D                               30A   Varying  inz('Software product 8')                                                   
0099.00 D                               15A   Varying  inz('1')                                                                 
0100.00 D                                9  2 inz(2300,00)                                                                         
0101.00 D                               10I 0          inz(9)                                                                      
0102.00 D                               30A   Varying  inz('Software product 9')                                                   
0103.00 D                               15A   Varying  inz('1')                                                                    
0104.00 D                                9  2 inz(1600,00)                                                                         
0105.00 D                               10I 0          inz(10)                                                                     
0106.00 D                               30A   Varying  inz('Software product 10')                                                  
0107.00 D                               15A   Varying  inz('1')                                                                    
0108.00 D                                9  2 inz(1200,00)                                                                         
0109.00 D                               10I 0          inz(11)                                                                     
0110.00 D                               30A   Varying  inz('Software product 11')                                                  
0111.00 D                               15A   Varying  inz('1')                                                                    
0112.00 D                                9  2 inz(6300,00)                                                                         
0113.00 D                               10I 0          inz(12)                                                                     
0114.00 D                               30A   Varying  inz('Software product 12')                                                  
0115.00 D                               15A   Varying  inz('3')                                                                    
0116.00 D                                9  2 inz(3300,00)                                                                         
0117.00 D                               10I 0          inz(13)                                                                     
0118.00 D                               30A   Varying  inz('Software product 13')                                                  
0119.00 D                               15A   Varying  inz('4')                                                                    
0120.00 D                                9  2 inz(4400,00)                                                                         
0121.00 D   Arr                               Dim(13)   Overlay(DSItem)                                                            
0122.00 D    Num                        10I 0          Overlay(Arr)                                                                
0123.00 D    Item                       30A   Varying  Overlay(Arr: *Next)                                                         
0124.00 D    quantity                   15A   Varying  Overlay(Arr: *Next)                                                         
0125.00 D    Price                       9  2 Overlay(Arr: *Next)                                                                  
0126.00                                                                                                                            
0127.00***************************************************************************                            
0128.00  * M A I N   P R O G R A M                                                                                                 
0129.00***************************************************************************                           
0130.00  /Free                                                                                                                     
0131.00      CurDat=%date();                                                                                                       
0132.00      today=%char(curdat);                                                                                                  
0133.00      date8 = %char(curdat:*iso);                                                                                           
0134.00                                                                                                                            
0135.00      Handle=PDF_CreateDoc('(*license='' '')+                                                
0136.00                          (*Searchpath=/Toolmaker/Fonts) +                                                               
0137.00                          (*Docname   =/tmp/Ferdinv.pdf)' +                                                                 
0138.00                         '(*Creator   =RPG) +                                                                               
0139.00                          (*Author    =Gerd Schramm) +                                                                   
0140.00                          (*pdidoc    =forminv.pdf) +                                                                       
0141.00                          (*dimension =mm) +                                                                                
0142.00                          (*direction =topdown) +                                                                           
0143.00                          (*docoptions=pdfa=PDF/A-3b metadata={filename={+                                                  
0144.00                          ZUGFeRD_extension_schema.xmp}}) +                                                                 
0145.00                          (*pagenbr   =0) +                                                                                 
0146.00                          (*pagex     =110) +                                                                               
0147.00                          (*pagey     =290) +                                                                               
0148.00                          (*Title     =Test invoice)');                                                                     
0149.00                                                                                                                            
0150.00        invnbr+=1;                                                                                                          
0151.00        exsr head;                                                                                                          
0152.00                                                                                                                            
0153.00     For x=1 to 13;                                                                                                         
0154.00        If line>250;                                                                                                        
0155.00          PDF_NextPage(Handle:'');                                                                                          
0156.00          exsr head;                                                                                                        
0157.00        Endif;                                                                                                              
0158.00        line+=10;                                                                                                           
0159.00        linea=%char(line);                                                                                                  
0160.00        xa     =%char(x);                                                                                                   
0161.00        total+=dsitem.price(x);                                                                                             
0162.00        pricea=%editw(dsitem.price(x):' .   .   ,  ');                                                                      
0163.00                                                                                                                            
0164.00        PDF_TextLine(Handle:'(*singletext='+xa+')'  +                                                                       
0165.00                             ' (*textx    =25) +                                                                            
0166.00                              (*texty    ='+linea+')' +                                                                     
0167.00                             '(*font     =LuciduxSans-Oblique) +                                                            
0168.00                              (*fontencoding=unicode) +                                                                     
0169.00                              (*fontoption  =embedding) +                                                                   
0170.00                              (*fontsize =10)');                                                                            
0171.00        PDF_TextLine(Handle:'(*singletext='+dsitem.item(x)+')' +                                                            
0172.00                             '(*textx    =35) +                                                                             
0173.00                              (*texty    ='+linea+')' +                                                                     
0174.00                             '(*font     =LuciduxSans-Oblique) +                                                            
0175.00                              (*fontencoding=unicode) +                                                                     
0176.00                              (*fontoption  =embedding) +                                                                   
0177.00                              (*fontsize =10)');                                                                            
0178.00        PDF_TextLine(Handle:'(*singletext='+dsitem.quantity(x)+')'  +                                                       
0179.00                             '(*textx    =110) +                                                                            
0180.00                              (*texty    ='+linea+')' +                                                                     
0181.00                             '(*font     =LuciduxSans-Oblique) +                                                            
0182.00                              (*fontencoding=unicode) +                                                                     
0183.00                              (*fontoption  =embedding) +                                                                   
0184.00                              (*fontsize =10)');                                                                            
0185.00        PDF_TextLine(Handle:'(*singletext='+curr+')' +                                                                      
0186.00                             '(*textx    =130) +                                                                            
0187.00                              (*texty    ='+linea+')' +                                                                     
0188.00                             '(*font     =LuciduxSans-Oblique) +                                                            
0189.00                              (*fontencoding=unicode) +                                                                     
0190.00                              (*fontoption  =embedding) +                                                                   
0191.00                              (*fontsize =10)');                                                                            
0192.00        PDF_TextLine(Handle:'(*singletext='+pricea+')' +                                                                    
0193.00                             '(*textx    =140) +                                                                            
0194.00                              (*texty    ='+linea+')' +                                                                     
0195.00                             '(*font     =LuciduxSans-Oblique) +                                                            
0196.00                              (*fontencoding=unicode) +                                                                     
0197.00                              (*fontoption  =embedding) +                                                                   
0198.00                              (*fontsize =10)');                                                                          
0199.00     Endfor;                                                                                                             
0200.00        exsr sum;                                                                                                           
0201.00        PDF_CloseDoc(Handle:' ');                                                                                           
0202.00        *Inlr=*on;                                                                                                          
0203.00//*************************************************************************                                            
0204.00     begsr sum;                                                                                                             
0205.00        If line>250;                                                                                                        
0206.00          PDF_NextPage(Handle:'');                                                                                          
0207.00          exsr head;                                                                                                        
0208.00        Endif;                                                                                                              
0209.00        line+=10;                                                                                                           
0210.00        linea=%char(line);                                                                                                  
0211.00        vatamount=total*vatpercent/100;                                                                                     
0212.00        vatamounta=%editw(vatamount:' .   .   ,  ');                                                                        
0213.00        gtotal=vatamount+total;                                                                                             
0214.00        totala=%editw(total:' .   .   ,  ');                                                                                
0215.00        gtotala=%editw(gtotal:' .   .   ,  ');                                                                              
0216.00                                                                                                                            
0217.00        PDF_TextLine(Handle:'(*singletext=------------) +                                                                   
0218.00                              (*textx    =140) +                                                                            
0219.00                              (*texty    ='+linea+')' +                                                                  
0220.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0221.00                              (*font     =LuciduxSans-Oblique) +                                                            
0222.00                              (*fontencoding=unicode) +                                                                     
0223.00                              (*fontoption  =embedding) +                                                                   
0224.00                              (*fontsize =10)');                                                                            
0225.00        line+=10;                                                                                                           
0226.00        linea=%char(line);                                                                                                  
0227.00        PDF_TextLine(Handle:'(*singletext='+txtsum+')' +                                                                    
0228.00                             '(*textx    =35) +                                                                             
0229.00                              (*texty    ='+linea+')' +                                                                     
0230.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0231.00                              (*font     =LuciduxSans-Oblique) +                                                            
0232.00                              (*fontencoding=unicode) +                                                                     
0233.00                              (*fontoption  =embedding) +                                                                   
0234.00                              (*fontsize =10)');                                                                            
0235.00        PDF_TextLine(Handle:'(*singletext='+curr+')' +                                                                      
0236.00                             '(*textx    =130) +                                                                            
0237.00                              (*texty    ='+linea+')' +                                                                     
0238.00                             '(*font     =LuciduxSans-Oblique) +                                                            
0239.00                              (*fontencoding=unicode) +                                                                     
0221.00                              (*font     =LuciduxSans-Oblique) +                                                            
0222.00                              (*fontencoding=unicode) +                                                                     
0223.00                              (*fontoption  =embedding) +                                                                   
0224.00                              (*fontsize =10)');                                                                            
0225.00        line+=10;                                                                                                           
0226.00        linea=%char(line);                                                                                                  
0227.00        PDF_TextLine(Handle:'(*singletext='+txtsum+')' +                                                                    
0228.00                             '(*textx    =35) +                                                                             
0229.00                              (*texty    ='+linea+')' +                                                                     
0230.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0231.00                              (*font     =LuciduxSans-Oblique) +                                                            
0232.00                              (*fontencoding=unicode) +                                                                     
0233.00                              (*fontoption  =embedding) +                                                                   
0234.00                              (*fontsize =10)');                                                                            
0235.00        PDF_TextLine(Handle:'(*singletext='+curr+')' +                                                                      
0236.00                             '(*textx    =130) +                                                                            
0237.00                              (*texty    ='+linea+')' +                                                                     
0238.00                             '(*font     =LuciduxSans-Oblique) +                                                            
0239.00                              (*fontencoding=unicode) +                                                                     
0240.00                              (*fontoption  =embedding) +                                                                
0222.00                              (*fontencoding=unicode) +                                                                     
0223.00                              (*fontoption  =embedding) +                                                                   
0224.00                              (*fontsize =10)');                                                                            
0225.00        line+=10;                                                                                                           
0226.00        linea=%char(line);                                                                                                  
0227.00        PDF_TextLine(Handle:'(*singletext='+txtsum+')' +                                                                    
0228.00                             '(*textx    =35) +                                                                             
0229.00                              (*texty    ='+linea+')' +                                                                     
0230.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0231.00                              (*font     =LuciduxSans-Oblique) +                                                            
0232.00                              (*fontencoding=unicode) +                                                                    
0233.00                              (*fontoption  =embedding) +                                                                   
0234.00                              (*fontsize =10)');                                                                            
0235.00        PDF_TextLine(Handle:'(*singletext='+curr+')' +                                                                      
0236.00                             '(*textx    =130) +                                                                            
0237.00                              (*texty    ='+linea+')' +                                                                     
0238.00                             '(*font     =LuciduxSans-Oblique) +                                                            
0239.00                              (*fontencoding=unicode) +                                                                     
0240.00                              (*fontoption  =embedding) +                                                                   
0241.00                              (*fontsize =10)');                                                                         
0242.00        PDF_TextLine(Handle:'(*singletext='+totala+')' +                                                                    
0243.00                             '(*textx    =140) +                                                                            
0244.00                              (*texty    ='+linea+')' +                                                                     
0245.00                             '(*font     =LuciduxSans-Oblique) +                                                            
0246.00                              (*fontencoding=unicode) +                                                                     
0247.00                              (*fontoption  =embedding) +                                                                   
0248.00                              (*fontsize =10)');                                                                            
0249.00        line+=10;                                                                                                           
0250.00        linea=%char(line);                                                                                                  
0251.00        PDF_TextLine(Handle:'(*singletext=------------) +                                                                   
0252.00                              (*textx    =140) +                                                                            
0253.00                              (*texty    ='+linea+')' +                                                                     
0254.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0255.00                              (*font     =LuciduxSans-Oblique) +                                                            
0256.00                              (*fontencoding=unicode) +                                                                     
0257.00                              (*fontoption  =embedding) +                                                                   
0258.00                              (*fontsize =10)');                                                                         
0259.00        line+=10;                                                                                                           
0260.00        linea=%char(line);                                                                                                  
0261.00        PDF_TextLine(Handle:'(*singletext='+vattext+')' +                                                                
0243.00                             '(*textx    =140) +                                                                            
0244.00                              (*texty    ='+linea+')' +                                                                     
0245.00                             '(*font     =LuciduxSans-Oblique) +                                                            
0246.00                              (*fontencoding=unicode) +                                                                     
0247.00                              (*fontoption  =embedding) +                                                                   
0248.00                              (*fontsize =10)');                                                                            
0249.00        line+=10;                                                                                                           
0250.00        linea=%char(line);                                                                                                  
0251.00        PDF_TextLine(Handle:'(*singletext=------------) +                                                                   
0252.00                              (*textx    =140) +                                                                            
0253.00                              (*texty    ='+linea+')' +                                                                     
0254.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0255.00                              (*font     =LuciduxSans-Oblique) +                                                            
0256.00                              (*fontencoding=unicode) +                                                                     
0257.00                              (*fontoption  =embedding) +                                                                   
0258.00                              (*fontsize =10)');                                                                            
0259.00        line+=10;                                                                                                           
0260.00        linea=%char(line);                                                                                                  
0261.00        PDF_TextLine(Handle:'(*singletext='+vattext+')' +                                                                   
0262.00                             '(*textx    =35) +                                                                          
0263.00                              (*texty    ='+linea+')' +                                                                     
0264.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0265.00                              (*font     =LuciduxSans-Oblique) +                                                            
0266.00                              (*fontencoding=unicode) +                                                                     
0267.00                              (*fontoption  =embedding) +                                                                   
0268.00                              (*fontsize =10)');                                                                            
0269.00        PDF_TextLine(Handle:'(*singletext='+curr+')' +                                                                      
0270.00                             '(*textx    =130) +                                                                            
0271.00                              (*texty    ='+linea+')' +                                                                     
0272.00                             '(*font     =LuciduxSans-Oblique) +                                                            
0273.00                              (*fontencoding=unicode) +                                                                     
0274.00                              (*fontoption  =embedding) +                                                                   
0275.00                              (*fontsize =10)');                                                                            
0276.00        PDF_TextLine(Handle:'(*singletext='+vatamounta+')' +                                                                
0277.00                             '(*textx    =140) +                                                                            
0278.00                              (*texty    ='+linea+')' +                                                                     
0279.00                             '(*font     =LuciduxSans-Oblique) +                                                           
0280.00                              (*fontencoding=unicode) +                                                                     
0281.00                              (*fontoption  =embedding) +                                                                   
0282.00                              (*fontsize =10)');                                                                         
0283.00        line+=10;                                                                                                           
0284.00        linea=%char(line);                                                                                                  
0285.00        PDF_TextLine(Handle:'(*singletext=------------) +                                                                   
0286.00                              (*textx    =140) +                                                                            
0287.00                              (*texty    ='+linea+')' +                                                                     
0288.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0289.00                              (*font     =LuciduxSans-Oblique) +                                                            
0290.00                              (*fontencoding=unicode) +                                                                     
0291.00                              (*fontoption  =embedding) +                                                                   
0292.00                              (*fontsize =10)');                                                                            
0293.00        line+=10;                                                                                                           
0294.00        linea=%char(line);                                                                                                  
0295.00        PDF_TextLine(Handle:'(*singletext='+gtotaltext+')' +                                                                
0296.00                             '(*textx    =35) +                                                                             
0297.00                              (*texty    ='+linea+')' +                                                                     
0298.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0299.00                              (*font     =LuciduxSans-Oblique) +                                                            
0300.00                              (*fontencoding=unicode) +                                                                     
0301.00                              (*fontoption  =embedding) +                                                                   
0302.00                              (*fontsize =10)');                                                                         
0303.00        PDF_TextLine(Handle:'(*singletext='+curr+')' +                                                                      
0304.00                             '(*textx    =130) +                                                                            
0305.00                              (*texty    ='+linea+')' +                                                                     
0306.00                             '(*font     =LuciduxSans-Oblique) +                                                            
0307.00                              (*fontencoding=unicode) +                                                                     
0308.00                              (*fontoption  =embedding) +                                                                   
0309.00                              (*fontsize =10)');                                                                            
0310.00        PDF_TextLine(Handle:'(*singletext='+gtotala+')' +                                                                   
0311.00                             '(*textx    =140) +                                                                            
0312.00                              (*texty    ='+linea+')' +                                                                     
0313.00                             '(*font     =LuciduxSans-Oblique) +                                                            
0314.00                              (*fontencoding=unicode) +                                                                     
0315.00                              (*fontoption  =embedding) +                                                                   
0316.00                              (*fontsize =10)');                                                                            
0317.00        PDF_FERDDOC('(*Docnbr         ='+invnbra+') +                                                                       
0318.00                     (*Docname        =/tmp/ferdinv.pdf)  +                                                                 
0319.00                     (*Doctype        =380) +                                                                               
0320.00                     (*Docjjjjmmdd    ='+date8+') +                                                                         
0321.00                     (*Sellername     ='+Sellername+') +                                                                    
0322.00                     (*Sellerline1    ='+sellerline1+') +                                                                
0323.00                     (*SellerPostcode ='+sellerplz+') +                                                                     
0324.00                     (*Sellercity     ='+sellercity+') +                                                                    
0325.00                     (*Sellercountry  ='+sellercountry+') +                                                                 
0326.00                     (*Buyername      ='+buyername+') +                                                                     
0327.00                     (*Buyerline1     ='+buyerline1+') +                                                                    
0328.00                     (*BuyerPostcode  ='+buyerplz+') +                                                                      
0329.00                     (*Buyercity      ='+buyercity+') +                                                                     
0330.00                     (*Buyercountry   ='+buyercountry+') +                                                                  
0331.00                     (*Currency       ='+curr+') +                                                                          
0332.00                     (*Vatid          ='+vatid+') +                                                                         
0333.00                     (*Vatpercent     ='+Vatpera+') +                                                                       
0334.00                     (*Vatamount      ='+Vatamounta+') +                                                                    
0335.00                     (*Payterm        ='+Termtext+') +                                                                      
0336.00                     (*Total          ='+totala+') +                                                                        
0337.00                     (*Grandtotal     ='+gtotala+')');                                                                      
0338.00     For x=1 to 13;                                                                                                         
0339.00        xa=%char(x);                                                                                                        
0340.00        pricea=%editw(dsitem.price(x):' .   .   ,  ');                                                                      
0341.00        PDF_FERDITEM('(*Docnbr         ='+invnbra+') +                                                                      
0342.00                     (*Docname        =/tmp/ferdinv.pdf)  +                                                              
0343.00                     (*Doctype        =380) +                                                                               
0344.00                     (*Docjjjjmmdd    ='+date8+') +                                                                         
0345.00                     (*itemline       ='+xa+') +                                                                            
0346.00                     (*itemname       ='+dsitem.item(x)+') +                                                                
0347.00                     (*itemquantity   ='+dsitem.quantity(x)+') +                                                            
0348.00                     (*itemamount     ='+pricea+')');                                                                       
0349.00     EndFor;                                                                                                                
0350.00     endsr;                                                                                                                 
0351.00//*************************************************************************                                            
0352.00        begsr head;                                                                                                         
0353.00        PDF_TextLine(Handle:'(*singletext='+buyername+')' +                                                                 
0354.00                             '(*textx    =25) +                                                                             
0355.00                              (*texty    =70) +                                                                             
0356.00                              (*font     =LuciduxSans-Oblique) +                                                            
0357.00                              (*fontencoding=unicode) +                                                                     
0358.00                              (*fontoption  =embedding) +                                                                   
0359.00                              (*fontsize =10)');                                                                            
0360.00        PDF_TextLine(Handle:'(*singletext='+buyerline1+')' +                                                                
0361.00                             '(*textx    =25) +                                                                             
0362.00                              (*texty    =75) +                                                                             
0363.00                              (*font     =LuciduxSans-Oblique) +                                                            
0364.00                              (*fontencoding=unicode) +                                                                     
0365.00                              (*fontsize =10)');                                                                            
0366.00        PDF_TextLine(Handle:'(*singletext='+buyerplz+')' +                                                                  
0367.00                             '(*textx    =25) +                                                                             
0368.00                              (*texty    =85) +                                                                             
0369.00                              (*font     =LuciduxSans-Oblique) +                                                            
0370.00                              (*fontencoding=unicode) +                                                                     
0371.00                              (*fontoption  =embedding) +                                                                   
0372.00                              (*fontsize =10)');                                                                            
0373.00        PDF_TextLine(Handle:'(*singletext='+buyercity+')' +                                                                 
0374.00                             '(*textx    =50) +                                                                             
0375.00                              (*texty    =85) +                                                                             
0376.00                              (*font     =LuciduxSans-Oblique) +                                                            
0377.00                              (*fontencoding=unicode) +                                                                     
0378.00                              (*fontoption  =embedding) +                                                                   
0379.00                              (*fontsize =10)');                                                                            
0380.00        PDF_TextLine(Handle:'(*singletext='+buyerkdnr+')' +                                                                 
0381.00                             '(*textx    =60) +                                                                             
0382.00                              (*texty    =120) +                                                                         
0364.00                              (*fontencoding=unicode) +                                                                     
0365.00                              (*fontsize =10)');                                                                            
0366.00        PDF_TextLine(Handle:'(*singletext='+buyerplz+')' +                                                                  
0367.00                             '(*textx    =25) +                                                                             
0368.00                              (*texty    =85) +                                                                             
0369.00                              (*font     =LuciduxSans-Oblique) +                                                            
0370.00                              (*fontencoding=unicode) +                                                                     
0371.00                              (*fontoption  =embedding) +                                                                  
0372.00                              (*fontsize =10)');                                                                            
0373.00        PDF_TextLine(Handle:'(*singletext='+buyercity+')' +                                                                 
0374.00                             '(*textx    =50) +                                                                             
0375.00                              (*texty    =85) +                                                                             
0376.00                              (*font     =LuciduxSans-Oblique) +                                                            
0377.00                              (*fontencoding=unicode) +                                                                     
0378.00                              (*fontoption  =embedding) +                                                                   
0379.00                              (*fontsize =10)');                                                                            
0380.00        PDF_TextLine(Handle:'(*singletext='+buyerkdnr+')' +                                                                 
0381.00                             '(*textx    =60) +                                                                             
0382.00                              (*texty    =120) +                                                                            
0383.00                              (*font     =LuciduxSans-Oblique) +                                                            
0384.00                              (*fontencoding=unicode) +                                                                     
0385.00                              (*fontoption  =embedding) +                                                                   
0386.00                              (*fontsize =10)');                                                                            
0387.00        PDF_TextLine(Handle:'(*singletext='+invnbra+')' +                                                                   
0388.00                             '(*textx    =120) +                                                                            
0389.00                              (*texty    =120) +                                                                            
0390.00                              (*font     =LuciduxSans-Oblique) +                                                            
0391.00                              (*fontencoding=unicode) +                                                                     
0392.00                              (*fontoption  =embedding) +                                                                   
0393.00                              (*fontsize =10)');                                                                            
0394.00        PDF_TextLine(Handle:'(*singletext='+today+')' +                                                                     
0395.00                             '(*textx    =165) +                                                                            
0396.00                              (*texty    =120) +                                                                            
0397.00                              (*font     =LuciduxSans-Oblique) +                                                            
0398.00                              (*fontencoding=unicode) +                                                                     
0399.00                              (*fontoption  =embedding) +                                                                   
0400.00                              (*fontsize =10)');                                                                            
0401.00                                                                                                                            
0402.00        line   =140;                                                                                                        
0403.00        linea=%char(line);                                                                                               
0404.00        PDF_TextLine(Handle:'(*singletext=Nr)'  +                                                                           
0405.00                             ' (*textx    =25) +                                                                            
0406.00                              (*texty    ='+linea+')' +                                                                  
0407.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0408.00                              (*font     =LuciduxSans-Oblique) +                                                            
0409.00                              (*fontencoding=unicode) +                                                                     
0410.00                              (*fontoption  =embedding) +                                                                   
0411.00                              (*fontsize =10)');                                                                            
0412.00        PDF_TextLine(Handle:'(*singletext=Artikel)' +                                                                       
0413.00                             '(*textx    =35) +                                                                             
0414.00                              (*texty    ='+linea+')' +                                                                     
0415.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0416.00                              (*font     =LuciduxSans-Oblique) +                                                            
0417.00                              (*fontencoding=unicode) +                                                                     
0418.00                              (*fontoption  =embedding) +                                                                   
0419.00                              (*fontsize =10)');                                                                            
0420.00        PDF_TextLine(Handle:'(*singletext=Menge)'  +                                                                        
0421.00                             '(*textx    =105) +                                                                            
0422.00                              (*texty    ='+linea+')' +                                                                     
0423.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0424.00                              (*font     =LuciduxSans-Oblique) +                                                            
0425.00                              (*fontencoding=unicode) +                                                                     
0426.00                              (*fontoption  =embedding) +                                                                   
0427.00                              (*fontsize =10)');                                                                            
0428.00        PDF_TextLine(Handle:'(*singletext=Währung)' +                                                                       
0429.00                             '(*textx    =125) +                                                                            
0430.00                              (*texty    ='+linea+')' +                                                                     
0431.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0432.00                              (*font     =LuciduxSans-Oblique) +                                                            
0433.00                              (*fontencoding=unicode) +                                                                     
0434.00                              (*fontoption  =embedding) +                                                                   
0435.00                              (*fontsize =10)');                                                                            
0436.00        PDF_TextLine(Handle:'(*singletext=Preis)' +                                                                         
0437.00                             '(*textx    =145) +                                                                            
0438.00                              (*texty    ='+linea+')' +                                                                     
0439.00                             '(*textoption =fillcolor={gray 0.5}) +                                                         
0440.00                              (*font     =LuciduxSans-Oblique) +                                                            
0441.00                              (*fontencoding=unicode) +                                                                     
0442.00                              (*fontoption  =embedding) +                                                                   
0443.00                              (*fontsize =10)');                                                                         
0444.00        endsr;                                                                                                              
0445.00   //***************************************************************************                                            
0446.00  /End-free 


Das Musterprogramm FERDRetrieve

Das Programm extrahiert die XML-Datei aus dem PDF/A-3b Ferdinv.pdf.

Programm FERDRetrieve
0001.00***************************************************************************                            
0002.00  * Program       : Ferdretr                                                                                                
0003.00  * Descriptions  : Retrieve xml from pdf                                                                                   
0004.00  * Programmer    : Toolmaker                                                                                               
0005.00  * Creation Date : 17.11.2015                                                                                              
0006.00***************************************************************************                            
0007.00  * H E A D E R - S P E C I F I C A T I O N S                                                                               
0008.00***************************************************************************                            
0009.00 H/COPY Qcpylesrc,H_SPECSPDF                                                                                                
0010.00***************************************************************************                           
0011.00  * F I L E   S P E C I F I C A T I O N S                                                                                  
0012.00***************************************************************************                           
0013.00***************************************************************************                           
0014.00  *  P R O T O T Y P I N G  /  C O P Y   M E M B E R                                                                        
0015.00***************************************************************************                            
0016.00 D/include qprolesrc,pdfsrvpgm         
0017.00  *                                                                                                                      
0018.00***************************************************************************                          
0019.00  * D E F I N I T I O N   G L O B A L   V A R I A B L E S                                                                   
0020.00***************************************************************************                           
0021.00                                                                                                                            
0022.00***************************************************************************                          
0023.00  * M A I N   P R O G R A M                                                                                                 
0024.00***************************************************************************                         
0025.00  /Free                                                                                                                     
0026.00                                                                                                                            
0027.00        PDF_FERDRETRIEVE('(*Docname    =/tmp/Ferdinv.pdf) +                                                                 
0028.00                          (*xmlfile    =/tmp/zugferd.xml)');                                                                
0029.00        *Inlr=*on;                                                                                                          
0030.00                                                                                                                            
0031.00  /End-free