Toolmaker Produkt-Dokumentation

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Nachfolgend werden die einzelnen PDF4i Funktionen beschrieben.
Die Parameter können in beliebiger Reihenfolge eingegeben werden. Sie sind nicht case sensitive.
Die Muss-Parameter sind fett gedruckt.

Funktion PDF_CreateDoc

Mit dieser Funktion wird ein neues PDF-Dokument erzeugt.
PointerName eines Adresspointers der im Definitionsteil des RPGLE-Programms mit * beschrieben wird.
*License=Übergibt die Lizenznummer. Wird keine gültige Nummer eingetragen, erscheint auf dem Dokument der Schriftzug www.pdflib.com
*Docname= IFS-Pfad und Name des Dokuments.
*Author=Author des Dokuments. Wird im Reiter PDF-Informationen unter Eigenschaften angezeigt.
*Creator=Erzeuger des Dokuments. Wird im Reiter PDF-Informationen unter Eigenschaften angezeigt
*Title=Titel des Dokuments. Wird im Reiter PDF-Informationen unter Eigenschaften angezeigt
*Searchpath= Default-Pfad für Fonts oder Images etc.
*PDIDoc=Name und Pfad eines Dokuments das vor dem Eröffnen einer Seite eingefügt werden soll. Z. B. Header und Footer-Zeilen oder Firmenlogo etc. Dieses Dokument kann natürlich auch mit unseren Funktionen erstellt werden.
*Dimension=Pixel oder Millimeter. Wird der Parameter weggelassen, werden automatisch Pixel angenommen.
*Direction=Topdown. Wird der Parameter weggelassen oder leer mitgegeben, wird BottomUp angenommen.
*Pagenbr=Zahl. Wird der Parameter verwendet, kann damit eine Seitennummerierung initiiert werden. Dann müssen aber auch die Parameter *PageX und *PageY mitgegeben werden.
*PageX=Horizontale Position der Seitennummer im Dokument. Achtung auf *Dimension und *Direction. Kann mit dem PDI-Dokument abgestimmt werden.
*PageY= Vertikale Position der Seitennummer im Dokument. Achtung auf *Dimension und *Direction. Kann mit dem PDI-Dokument abgestimmt werden.
*Docoptions=Alle im PDFLIB®-Handbuch unter PDF_begin_document möglichen Optionen. Bei FeRD-PDF unbedingt nötig: (*docoptions=pdfa=PDF/A-3b metadata={filename={ZUGFeRD_extension_schema.xmp}})
Beispiel einer Rechnung, die als Template forminv.pdf verwendet.
Handle=PDF_CreateDoc( '(*license='' '') (*Searchpath=/Toolmaker/Fonts) +
(*Docname =/home/Invoice.pdf) (*Creator =RPG) (*Author =Toolmaker) +
(*pdidoc =forminv.pdf) (*dimension =mm) (*direction =topdown) +
(*pagenbr =0) (*pagex =110) (*pagey =290) (*Title =Test invoice) ' );

Funktion PDF_CloseDoc

Mit dieser Funktion muss das Dokument geschlossen werden.
PointerName eines Adresspointers der im Definitionsteil des RPGLE-Programms mit * beschrieben wird.
*Pageoptions=Alle in der PDFLIB-Funktion PDF_end_page_ext möglichen Options-Parameter. Siehe PDFLIB Handbuch.
*Docoptions=Alle in der PDFLIB-Funktion PDF_end_page_ext möglichen Options-Parameter. Siehe PDFLIB Handbuch

Funktion PDF_NextPage

Mit dieser Funktion wird eine neue Seite im gleichen Dokument erzeugt. Die Einstellungen der Anfangsseite, wie PDI-Dokument oder Seitennummerierung werden übernommen.
Pointer Name eines Adresspointers der im Definitionsteil des RPGLE-Programms mit * beschrieben wird.
*Pagenbr= 0 (Null) wenn die Seitennummerierung nicht weitergezählt werden soll.

Funktion PDF_Textflow

Mit dieser Funktion wird ein Fließtext in einen definierten Rahmen gefüllt. Bei Überlauf wird die Funktion PDF_NextPage aufgerufen und der Textfluss fortgesetzt.
PointerName eines Adresspointers der im Definitionsteil des RPGLE-Programms mit * beschrieben wird.
*Flowtext= Fließtext.
*FlowluX= X-Position des Rahmens bei topdown links/oben sonst links/unten.
*FlowluY= Y-Position des Rahmens bei topdown links/oben sonst links/unten.
*FlowrdX= X-Position des Rahmens bei topdown rechts/unten sonst rechts/oben.
*FlowrdY= Y-Position des Rahmens bei topdown rechts/unten sonst rechts/oben.
*Flowcrtopt=Alle in der PDFLIB-Funktion PDF_create_textflow möglichen Options-Parameter. Z. B. Font, Fontsize etc. Siehe PDFLIB Handbuch
*Flowfitopt=Alle in der PDFLIB-Funktion PDF_fit_textflow möglichen Options-Parameter. Siehe PDFLIB Handbuch
Beispiel mit *flowtext als Textfeld ‚text' und *flowcrtopt als Feld ‚crtopt':
d Text s 4096 varying
d CrtOpt s 256 inz('fontname=Helvetica +
d fontsize=8 encoding=unicode +
d fillcolor={gray 0} +
d alignment=justify')
PDF_TextFlow(Handle:'(*flowtext='+text +')' +
'(*flowlux =0,4) +
(*flowluy =2,75) +
(*flowrdx =2) +
(*flowrdy =4,3) +
(*flowwidth =0) +
(*flowheight=0) +
(*flowcrtopt='+crtopt +')');

Funktion PDF_Textline

Mit dieser Funktion wird eine Zeichenkette (ein oder mehrere Zeichen oder Wörter) als Textzeile erzeugt.
PointerName eines Adresspointers der im Definitionsteil des RPGLE-Programms mit * beschrieben wird.
*Singletext= Text als Konstante oder Feld.
*TextX=Horizontale Position des Textes entsprechend der gewählten Einheiten. (Siehe Dimension).
*TextY=Vertikale Position des Textes entsprechend der gewählten Einheiten und Richtung. (Siehe Dimension und Direction).
*Font= Schriftart.
*Fontsize= Größe der Schrift.
*Fontencoding=Alle in der PDFLIB-Funktion PDF_load_font möglichen Encoding-Parameter. Siehe PDFLIB Handbuch.
*Fontoption=Alle in der PDFLIB-Funktion PDF_load_font möglichen Options-Parameter. Siehe PDFLIB Handbuch.
*Textoption=Alle in der PDFLIB-Funktion PDF_fit_textline möglichen Options-Parameter. Siehe PDFLIB Handbuch.
Beispiel eines Textes, der immer 130 mm vom linken Rand in der Zeile linea steht, die im Programm errechnet wird:
d TxtEUR s 4096 inz('EUR')
d varying
d linea s 5
PDF_TextLine(Handle:'(*singletext='txteur')' +
'(*textx =130) +
(*texty ='linea')' +
'(*textoption =fillcolor={gray 0.5}) +
(*font =arial) +
(*fontencoding=unicode) +
(*fontsize =10)');

Funktion PDF_Drawbox


Mit dieser Funktion wird ein Rechteck erzeugt.
Pointer Name eines Adresspointers der im Definitionsteil des RPGLE-Programms mit * beschrieben wird.
*RectX=Horizontale Position des Rechtecks entsprechend der gewählten Einheiten (Siehe Dimension)
*RectY=Vertikale Position des Rechtecks entsprechend der gewählten Einheiten und Richtung. (Siehe Dimension und Direction)
*Rectwidth= Breite des Rechtecks entsprechend der gewählten Einheiten (Siehe Dimension)
*Rectheight=Höhe des Rechtecks entsprechend der gewählten Einheiten und Richtung. (Siehe Dimension und Direction).
*Fillcolor=Farbfüllung des Rechtecks. Zur schnellen Auswahl stehen die Standardfarben rot, grün, blau, cyan, magenta, gelb und schwarz zur Verfügung. Sollte das nicht reichen kann die Originaldefinition der PDF_setcolor-Funktion verwendet werden (z. B. stroke, rgb, 1.0, 0.0, 0.0, 0.0 für rot). Default ist keine Farbfüllung.
*strokecolor=Farbe des Rahmens. Zur schnellen Auswahl stehen die Standardfarben rot, grün, blau, cyan, magenta, gelb und schwarz zur Verfügung. Sollte das nicht reichen kann die Originaldefinition der PDF_setcolor-Funktion verwendet werden (z. B. stroke, rgb, 1.0, 0.0, 0.0, 0.0 für rot). Default ist die evtl. davor schon definierte Strichfarbe oder falls noch nichts definiert war grau.
*Strokewidth=Stärke der Umrandung in Pixel.
Beispiel einer Box mit grünem Rahmen:
PDF_DrawBox(Handle:'(*strokewidth=1) +
(*rectx =20) +
(*recty =130) +
(*StrokeColor=stroke, cmyk, 1.0, 0.0, 1.0, 0.0) +
(*rectwidth =170) +
(*rectheight =20)');

Funktion PDF_Drawline

Mit dieser Funktion wird eine Linie gezogen.
Pointer Name eines Adresspointers der im Definitionsteil des RPGLE-Programms mit * beschrieben wird.
{*}StrokefromX= X-Position des Linienbeginns entsprechend der gewählten Dimension und Richtung.
{*}StrokefromY= Y-Position des Linienbeginns entsprechend der gewählten Dimension und Richtung.
{*}StroketoX= X-Position des Linienendes entsprechend der gewählten Dimension und Richtung.
{*}StroketoY= Y-Position des Linienendes entsprechend der gewählten Dimension und Richtung.
{*}Strokewidth=Breite der Linie in Pixel.
{*}Strokecolor= Farbe der Linie. Zur schnellen Auswahl stehen die Standardfarben rot, grün, blau, cyan, magenta, gelb und schwarz zur Verfügung. Sollte das nicht reichen kann die Originaldefinition der PDF_setcolor-Funktion verwendet werden (z. B. stroke, rgb, 1.0, 0.0, 0.0, 0.0 für rot).
Beispiel in mm und Pixel:
PDF_DrawLine(Handle:'(*strokewidth=2) +
(*StrokeColor=blue) +
(*Strokefromx=008) +
(*Strokefromy=25) +
(*Stroketox =205) +
(*Stroketoy =25)');

Funktion PDF_Image


Mit dieser Funktion wird ein Bild eingefügt.
Pointer Name eines Adresspointers der im Definitionsteil des RPGLE-Programms mit
*beschrieben wird.
*Image= Pfad und Name des Bildes.
*Imgtype=Type des Bildes. (jpg, tif etc.) Bei Eingabe von ‚auto' wird die Endung des Objekts als Type angenommen.
*ImgX=X-Position des Bildes links/unten im Dokument. Achtung! Auch wenn topdown angegeben ist wird links/unten und nicht links-oben angenommen.
*ImgY= Y-Position des Bildes links/unten im Dokument.
*ImgLopt=Alle in der PDFLIB-Funktion PDF_load_image möglichen Options-Parameter. Siehe PDFLIB Handbuch
*ImgFopt=Alle in der PDFLIB-Funktion PDF_fit_image möglichen Options-Parameter. Siehe PDFLIB Handbuch
Beispiel eines Firmenlogos in 30% seiner Originalgröße am oberen rechten Rand des Dokuments in mm:
PDF_Image(Handle:'(*imgtype=auto) +
(*image =/home/tm_logo.jpg) +
(*imgfopt =scale 0.3) +
(*imgx =140) +
(*imgy =20)');

Funktion PDF_FeRDDoc Dokumentwerte

Mit dieser Funktion werden die Daten der PDF-Rechnung in eine XML-Datei umgewandelt.
FeRD-PDF's müssen dem Standard PDF/A-3b entsprechen. Sie müssen daher mir einer Metadata XMP-Datei verknüpft sein. Für die FeRD-Rechnung gibt es die Muster-XMP-Datei ZUGFeRD_extension_schema.xmp die von uns mitgeliefert wird oder aber auch unter http://www.pdflib.com/fileadmin/pdflib/Cookbook/input/ZUGFeRD_extension_schema.xmp zu finden ist.
Damit diese Datei für den Standard PDF/A-3b verknüpft werden kann, muss in der Funktion PDF_CreateDoc der Parameter docoptions mit folgenden Daten übergeben werden:
(*docoptions=pdfa=PDF/A-3b metadata={filename={ZUGFeRD_extension_schema.xmp}})
Wenn nur der XML-Teil wichtig sein soll kann praktisch ein leeres PDF-Dokument mit XML-Teil erstellt werden. Es bedarf dazu neben den FeRD-Funktionen nur der Funktionen PDF_CreateDoc und PDF_CloseDoc.
Die getrimten Werte aus den eingegebenen Parametern werden in eine vorhandene Invoice-XML-Tabelle gefüllt.
Beispiel eines Ausschnitts dieser XML-Datei:
<ram:Name>Musterlieferant GmbH</ram:Name>
-<SellerTradeParty>
-<PostalTradeAddress>
<PostcodeCode>80333</PostcodeCode>
<LineOne>Lieferantenstraße 20</LineOne>
<CityName>München</CityName>
<CountryID>DE</CountryID>
</PostalTradeAddress>
</SellerTradeParty>
Aus dieser Tabelle wird bei PDF_CloseDoc eine XML-Datei im IFS erstellt. Danach wird das PDF-Dokument mit dieser XML-Datei und der vorgefertigten XMP-Datei nach den FeRD-Regeln verknüpft.
Folgende Parameter haben diese Bedeutung:
Parameter Bedeutung
PointerName eines Adresspointers der im Definitionsteil des RPGLE-Programms mit*beschrieben wird.
*Docnbr Dokumentnummer
*Doctype Dokumentenart lt. EDIFACT380Rechnung 381Gutschrift
*Docname Dokumentenname
*Docjjjjmmdd Dokumentendatum in der Form jjj.mm.dd
*Sellername Name des Dokumentenausstellers
*Sellerline1 1. Linie der Adresse des Dokumentenausstellers
*SellerpostcodePLZ des Dokumentenausstellers
*Sellercity Ort des Dokumentenausstellers
*Sellercountry Ländercode des Dokumentenausstellers lt EDIFACT DE etc. default ist DE
*Vatid USt-IdNr.
*Buyername Name der Emfängers
*Buyerline1 1. Linie der Adresse des Empfängers
*BuyerpostcodePLZ des Empfängers
*Buyercity Ort der Empfängers
*Buyercountry Ländercode des Empfängers lt. EDIFACT
*Dlyjjjjmmdd Lieferdatum in der Form jjjj.mm.dd
*Currency Währungscode lt. EDIFACT EUR, USD etc.
*Vatcurrency Mehrwertsteuerwährung (nur wenn abweichenf von Dokumentenwährung)
*Vatbasis Basisbetrag für Mwst
*Vatamount Mehrwertsteuerbetrag
*Vatpercent Prozentbetrag
*Payterm Text Zahlungsvereinbarungen
*Total Rechnungsbetrag gesamt netto
*Tcurrency Gesamtbetragswährung netto (nur wenn abweichend)
*ChargeamountSpesenbetrag
*Chargecurr Währungscode Spesen (nur wenn abweichend)
*Allowance Rabattbetrag
*Acurrency Währungscode Rabatt (nur wenn abweichend)
*Grandtotal Rechnungsbetrag gesamt brutto
*Grandtcurr Währungscode des Rechnungsbetrags brutto (nur wenn abweichend)
Fettgedruckte Parameter sind Mussfelder.
Beispiel:
PDF_FeRDDoc(Handle:'(*Docnbr='renra') +
(*Doctype =380) +
(*Docname =TMS.pdf) +
(*Docjjjjmmddj ='datea') +
(*Sellername ='Sellername') +
(*Sellerline1 ='sellerline1') +
(*SellerPostcode='sellerplz') +
(*Sellercity ='sellercity') +
(*Sellercountry ='sellercountry') +
(*Buyername ='buyername') +
Buyerline1 ='buyerline1') +
(*BuyerPostcode='buyerplz') +
(*Buyercity ='buyercity') +
(*Buyercountry ='buyercountry') +
(*Currency ='curr') +
(*Vatid ='vatid') +
(*Vatpercent='vatpera') +
(*Vatamount='vatamounta') +
(*Payterm ='Termtext') +
(*Total ='totala') +
(*Grandtotal ='gtotala')');

Funktion PDF_FeRDItem Artikeldaten

Mit dieser Funktion können Artikelwerte in die XML-Datei eingefügt werden. Dazu muss für jeden Artikel eine Funktion aufgerufen werden.Die Summe der Einzelwerte muss das Total in der PDF_FeRDDoc Funktion ergeben.
Folgende Parameter habe diese Bedeutung:
Parameter Bedeutung
PointerName eines Adresspointers der im Definitionsteil des RPGLE-Programms mit*beschrieben wird.
*Docnbr Dokumentnummer
*Docname Dokumentenname
*Doctype Dokumentenart lt. EDIFACT380Rechnung
381Gutschrift
*Docjjjjmmdd Dokumentendatum in der Form jjj.mm.dd
*Itemline Artikelzeilennummer
*temquantity Artikelmenge
*Itemamount Artikelbetrag
*Itemname Artikelbezeichnung
*Itemcurrency Artikelwährung, default ist die Dokumentwährung.
Fettgedruckte Parameter sind Mussfelder.
Beispiel:
PDF_FeRDItem(Handle:'(*docnbr='renra') +
(*Doctype =380) +
(*Docname = TMS.pdf) +
(*Docjjjjmmddj ='datea') +
(*Itemline ='Itemlinea') +
(*Itemname ='Itemname') +
(*Itemquantity ='quantitya') +
(*Itemamount ='Itemamounta')'

Funktion PDF_FeRDRetrieve Extraktion der XML-Datei aus einem FeRD-PDF


Mit der neuen Funktion PDF_FeRDretrieve wird die XML-Datei aus einer FeRD-Rechnung extrahiert. Sie wird in einer IFS-XML-Datei gespeichert.
Die Funktion hat 2 Parameter:
*docnamePfad und Name des PDF-Dokuments
*xmlfilePfad und Name der IFS-Datei.
Beispiel: PDF_FeRDRetrieve((Handle:'(*docname=/tmp/FeRDInv.pdf) +
(*xmlfile=/tmp/ZUGFeRD.xml)';

  • No labels