Modul PDF
Inhaltsverzeichnis
- 1 PDF
- 1.1 #pdf_start
- 1.2 #pdf_stop
- 1.3 #pdf_text
- 1.4 #pdf_texto
- 1.5 #pdf_font
- 1.6 #pdf_sety
- 1.7 #pdf_checknewline
- 1.8 #pdf_createbarcode
- 1.9 #pdf_loadpic
- 1.10 #pdf_insertpic
- 1.11 #pdf_newpage
- 1.12 #pdf_newcol
- 1.13 #pdf_multi
- 1.14 #pdf_multibb
- 1.15 #pdf_line
- 1.16 #pdf_coldef
- 1.17 $PDF_PAGE()
- 1.18 $PDF_YMM()
Im Modul PDF werden die Routinen zusammengefasst, die zur Erstellung von PDF-Dateien verwendet werden.
Allgemeines
- #pdf_start - Dokument beginnen
- #pdf_stop - Dokument beenden und speichern
Text ausgeben
- #pdf_text - Textzeile
- #pdf_texto - Text ohne neue Zeile
- #pdf_multi - mehrzeiliger Text
- #pdf_multibb - mehrzeiliger Text mit Pseudo-BB-Code
- #pdf_font - Font setzen
Bilder und Linien
- #pdf_loadpic - Bild laden
- #pdf_insertpic - Bild einfügen
- #pdf_line - Linie zeichnen
- #pdf_createbarcode - Barcodes erstellen
Positionierung
- #pdf_sety - Y-Position setzen
- #pdf_checknewline - Neue Zeile beginnen mit Prüfung auf Spalten- oder Seitenumbruch
- #pdf_newpage - Neue Seite beginnen
- #pdf_newcol - Neue Spalte beginnen
- #pdf_coldef - Spaltendefinition
- $PAGE()
- $YMM()
Beispiel
#pdf_start
Beginnt ein PDF-Dokument.
Derzeit wird nur das Format DIN A4 im Hoch- oder Querformat unterstützt.
Parameter
- cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
- pal (PageLandscape) - Wenn Y, dann wird die Seite im Querformat erstellt; Default N; Funktionen werden ersetzt
Beispiel
#pdf_start #pdf_text c="Hello World" #pdf_stop fn=$DIR(doc)\test.pdf
#pdf_stop
Beendet das PDF-Dokument und speichert es.
Parameter
- cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
- fn ("FileName") - dateiname, unter dem das Dokument gespeichert wird; Funktionen werden ersetzt. Ist der Parameter leer, so wird ein Dateiauswahldialog geöffnet.
- o ("open") - Wenn Y, wird das PDF-Dokument nach der Erstellung geöffnet; default N; Funktionen werden ersetzt
Beispiel
#pdf_start #pdf_text c="Hello World" #pdf_stop fn=$DIR(doc)\test.pdf
#pdf_text
Fügt eine Textzeile ein.
Parameter
- a ("align") - Ausrichtung des Textes
- c ("center") - zentriert
- d2 - rechtsbündig auf zwei Dezimalstellen
- d4 - rechtsbündig auf vier Dezimalstellen
- l - linksbündig
- r - rechtsbündig
- c ("caption") - Text, der ausgegeben werden soll; Funktionen werden ersetzt
- cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
- grp ("group") - Gruppenwert; wenn dieser Wert vom vorherigen abweicht, dann wird eine neue Gruppe begonnen; Funktionen werden ersetzt
- l - Linker Rand; Funktionen werden ersetzt; Default 18mm
- mb ("margin bottom") - Wird nach dem Zeilenumbruch dieser untere Rand unterschritten, dann wird eine neue Spalte beziehungsweise neue Seite begonnen; Funktionen werden ersetzt; default 15 mm.
- r - Rechter Rand; Funktionen werden ersetzt; Default 15mm
Beispiel
#pdf_text c="Dies ist ein Test" l=30 r=100 a=c
#pdf_texto
Wie #pdf_text, mit dem Unterschied, dass kein Zeilenvorschub erfolgt.
Parameter
siehe #pdf_text
Beispiel
#pdf_texto c="Eine Beispielzeile mit " #pdf_font b=Y #pdf_text l=53 c="einem Font-Wechsel "
#pdf_font
Setzt den Font für die Textaufgabe.
Parameter
- b ("bold") - Wenn Y, dann wird der Font fett dargestellt.
- cl ("color") - Farbe, als Hex-Wert oder als Farbkonstante
- cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
- i ("italic") - Wenn Y, dann wird der Font kursiv dargestellt.
- n ("name") - Name der Schriftart; Default ist Helvetica
- s ("size") - Größe der Schriftart in typographischen Punkt; Funktionen werden ersetzt; Default 10. Die Zeilenhöhe ist 120% der Schriftgröße
Beispiel
#setfont s=12 b=Y
#pdf_sety
Setzt die Y-Position.
Bei der Ausgabe mit #pdf_text haben wir einen automatischen Zeilenvorschub. Sollen jedoch Absätze eingefügt werden, dann muss die Y-Position entsprechend verändert werden.
Der 0-Punkt bei PDF liegt in der linken, unteren Ecke. Die obere Ecke bei einem stehenden DIN A4-Blatt liegt also bei 297 mm, die Y-Position reduziert sich also laufend, wenn das Blatt von oben nach unten beschrieben wird.
Parameter
- cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
- d ("distance") - Reduziert den Y- Wert um den angegebenen Wert in mm; Funktionen werden ersetzt.
- y - Setzt die Y-Position als absoluten Wert in mm; Funktionen werden ersetzt.
Beispiel
#pdf_text Zeile 1 #pdf_text Zeile 2 #pdf_sety d=5 #pdf_text Neuer Absatz #pdf_text weitere Zeile
#pdf_checknewline
Fügt eine neue Zeile ein. Liegt die Position dann unter dem unteren Rand, wird eine neue Spalte beziehungsweise eine neue Seite begonnen.
Parameter
- cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
- mb ("margin bottom") - Unterer Rand in mm; wird dieser Wert unterschritten, dann wird eine neue Spalte beziehungsweise eine neue Seite begonnen. Funktionen werden ersetzt; default ist 20.
Beispiel
#pdf_checknewline mb=15
#pdf_createbarcode
Erzeugt einen Barcode als Bild, das dann mit #pdf_insertpic eingefügt werden kann.
Parameter
- cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
- n - Name des Bildes. Muss im Dokument eindeutig sein.
- rot - Rotation; default 0; Funktionen werden ersetzt; eignet sich primär für 90, 180 und 270
- w - Breite (und Höhe) des internen Bildes; default 800; Funktionen werden resetzt
- y - Typ des Barcodes
- code_128 - Code 128 (https://de.wikipedia.org/wiki/Code128)
- qr - QR-Code (https://de.wikipedia.org/wiki/QR-Code)
- code_11 - Code 11 (https://en.wikipedia.org/wiki/Code_11)
- c25_matrix - Standard Code 2 of 5 (https://www.suchymips.de/de/code-matrix.htm)
- c25_inter - 2 of 5 Interleaved (https://www.suchymips.de/de/barcode-2-5-interleaved.htm)
- c25_iata - 2 of 5 IATA (https://www.suchymips.de/de/code-iata.htm)
- c25_logic - Code 2 of 5 Data Logic (https://www.suchymips.de/de/datalogic.htm)
- c25_ind - Code 2 of 5 Industrial (https://www.suchymips.de/de/barcode-2-5.htm)
- code_39 - Code 3 of 9 (Code 39) (https://www.suchymips.de/de/code-39.htm)
- code_39ex - Extended Code 3 of 9 (Code 39+) (https://www.suchymips.de/de/code-39-extended.htm)
- eanx - EAN (https://www.suchymips.de/de/ean-upc.htm)
- ean128 - GS1-128 (UCC.EAN-128) (https://www.suchymips.de/de/barcode-lexikon-uebersicht-e.htm)
- code_bar - Codabar (https://www.suchymips.de/de/codabar.htm)
- dp_leit - Deutsche Post Leitcode (https://de.wikipedia.org/wiki/Leitcode)
- dp_ident - Deutsche Post Identcode (https://www.activebarcode.de/codes/identcode.html)
- code_16k - Code 16K (https://de.wikipedia.org/wiki/Code_16K)
- code_49 - Code 49 (https://de.wikipedia.org/wiki/Code_49)
- code_93 - Code 93 (https://www.suchymips.de/de/code-93.htm)
- code_flat - Flattermarken
- z - Wert, der als Barcode angezeigt wird; Funktionen werden ersetzt. Bitte die Beschränkungen des jeweiligen Barcodes beachten.
Beispiel
#pdf_createbarcode n=bc y=qr z=$DATA(dat,kdnr)@Data(dat,ordnr) #pdf_insertpic n=bc x=50 y=50 w=30
#pdf_loadpic
Das Laden und das Einfügen von Bildern sind getrennte Anweisungen, da ein und dasselbe Bild nur einmal geladen wird (und dann nur einmal in der PDF-Datei ist), aber öfters eingefügt werden kann.
Parameter
- fn ("FileName") - Dateiname der Datei, aus welcher das Bild geladen wird.
- n - Name des Bildes. Muss im Dokument eindeutig sein.
Beispiel
#pdf_loadpic n=logo fn=i:\temp\logo_firma.BMP #pdf_insertpic n=logo w=60 h=40 x=50 y=50
#pdf_insertpic
Das Laden und das Einfügen von Bildern sind getrennte Anweisungen, da ein und dasselbe Bild nur einmal geladen wird (und dann nur einmal in der PDF-Datei ist), aber öfters eingefügt werden kann.
Das Bild kann vertikal absolut positioniert werden, indem der Parameter y gesetzt wird. Ist der Parameter y nicht gesetzt, so wird das Bild relativ gesetzt, also unter den Text gesetzt. In diesem Fall werden die Parameter d und mb berücksichtigt.
Parameter
- d ("distance") - Abstand zwischen Text und Bild in mm; Default 0; Funktionen werden ersetzt. Parameter wird nur bei relativer Positionierung berücksichtigt.
- h - Höhe des Bildes; Funktionen werden ersetzt.
- mb ("margin bottom") - Unterer Rand. Würde bei relativer Positionierung dieser Rand unterschritten, so wird eine neue Spalte beziehungsweise neue Seite begonnen.
- n - Name des Bildes. Das Bild dieses Namens muss vorher mit #pdf_loadpic geladen worden sein.
- w ("width") - Breite des Bildes in mm; Funktionen werden ersetzt.
- x - X-Position des Bildes; Funktionen werden ersetzt.
- y - Y-Position des Bildes; Funktionen werden ersetzt. Wenn der Parameter y gesetzt ist, wird das Bild absolut positioniert und die Parameter d und mb bleiben unberücksichtigt.
Beispiel
#pdf_loadpic n=logo fn=i:\temp\logo_firma.BMP #pdf_insertpic n=logo w=60 h=40 x=50 y=50
#pdf_newpage
Beginnt eine neue Seite
Parameter
(keine)
Beispiel
#pdf_newpage
#pdf_newcol
Beginnt eine neue Spalte. Wenn es sich bereits um die letzte Spalte auf der Seite handelt, dann wird eine neue Seite begonnen.
Parameter
(keine)
Beispiel
#pdf_newcol
#pdf_multi
Fügt einen Text ein, die Zeilen werden erforderlichenfalls umgebrochen.
Parameter
- a ("align") - Ausrichtung des Textes
- c ("center") - zentriert
- d2 - rechtsbündig auf zwei Dezimalstellen
- d4 - rechtsbündig auf vier Dezimalstellen
- l - linksbündig
- r - rechtsbündig
- c ("caption") - Text, der ausgegeben werden soll; Funktionen werden ersetzt
- grp ("group") - Gruppenwert; wenn dieser Wert vom vorherigen abweicht, dann wird eine neue Gruppe begonnen; Funktionen werden ersetzt
- l - Linker Rand; Funktionen werden ersetzt; Default 18mm
- mb ("margin bottom") - Wird nach dem Zeilenumbruch dieser untere Rand unterschritten, dann wird eine neue Spalte beziehungsweise neue Seite begonnen; Funktionen werden ersetzt; default 15 mm.
- mbp ("margin bottom paragraph") - Wird nach dem Zeilenumbruch dieser untere Rand unterschritten, und handelt es sich um eine leere Zeile, dann wird eine neue Spalte beziehungsweise neue Seite begonnen; Funktionen werden ersetzt; default 15 mm. (Mit diesem Parameter kann bewirkt werden, dass ein Spalten- oder Seitenumbruch ein wenig vorgezogen wird, damit nicht eine einzelne oder einige wenige einzelne Zeilen am Ende einer Spalte oder Seite stehen bleiben.)
- r - Rechter Rand; Funktionen werden ersetzt; Default 15mm
Beispiel
#pdf_multi mb=15 mbp=22 c=$TEXT(3)
#pdf_multibb
Wie #pdf_multi, allerdings werden Pseudo-BB-Codes interpretiert.
Hinweis: Parameter mbp muss noch implementiert werden.
Codes
- [] - Font normal
- [i] - Font kursiv / italic
- [b] - Font fett / bold
- [bi] - Font fett und kursiv / bold italic
#pdf_line
Zeichnet eine Linie
Parameter
- cl ("color") - Farbe, als Hex-Wert oder als Farbkonstante
- d ("distance") - Verändert vor dem Zeichnen der Linie die aktuelle Y-Position; default 0
- w ("width") - Breite der Linie
- x1 - X-Position des Start-Punktes als Distanz vom linken Rand; default 18 mm
- x2 - X-Position des End-Punktes als Distanz vom rechten Rand; default 15 mm
- y1 - Y-Position des Start-Punktes; default aktuelle Y-Position
- y2 - Y-Position des End-Punktes; default aktuelle Y-Position
Beispiel
#pdf_line x1=30 x2=150 y1=250 y2=200 w=1 cl=red #pdf_line w=0,1 d=5
#pdf_coldef
Richtet auf der Seite mehrere Spalten ein.
Parameter
- cc ("ColumnCount") - Anzahl der Spalten; default 1; Funktionen werden ersetzt.
- l - Linker Rand in mm; default 18mm; Funktionen werden ersetzt.
- r - Linker Rand in mm; default 15mm; Funktionen werden ersetzt.
- ws ("WhiteSpace") - Horizontaler Spaltenabstand; default 7mm; Funktionen werden ersetzt.
Beispiel
#pdf_coldef cc=2 ws=7
$PDF_PAGE()
Gibt die aktuelle Seitenzahl zurück
Parameter
(keine)
Beispiel
#pdf_text a=r c="Seite $PDF_PAGE()"
$PDF_YMM()
Gibt die Y-Position in mm zurück
Parameter
(keine)
Beispiel
#pdf_line x1=30 x2=150 y1=$PDF_YMM() y2=$PDF_YMM() w=1 cl=red