Modul PDF: Unterschied zwischen den Versionen

Aus bafbal.de
Zur Navigation springen Zur Suche springen
Zeile 160: Zeile 160:
 
** code_128 - Code 128 (https://de.wikipedia.org/wiki/Code128)
 
** code_128 - Code 128 (https://de.wikipedia.org/wiki/Code128)
 
** qr - QR-Code (https://de.wikipedia.org/wiki/QR-Code)
 
** qr - QR-Code (https://de.wikipedia.org/wiki/QR-Code)
 +
* z - Wert, der als Barcode angezeigt wird; Funktionen werden ersetzt. Bitte die Beschränkungen des jeweiligen Barcodes beachten.
  
 
'''Beispiel'''
 
'''Beispiel'''
Zeile 165: Zeile 166:
 
  #pdf_createbarcode  n=bc  y=qr  z=$DATA(dat,kdnr)@Data(dat,ordnr)
 
  #pdf_createbarcode  n=bc  y=qr  z=$DATA(dat,kdnr)@Data(dat,ordnr)
 
  #pdf_insertpic  n=bc      x=50  y=50  w=30
 
  #pdf_insertpic  n=bc      x=50  y=50  w=30
 
  
 
==#pdf_loadpic==
 
==#pdf_loadpic==

Version vom 11. März 2022, 14:19 Uhr

PDF

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

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

  • 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

  • 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
  • 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
  • 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

  • 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

  • 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

  • 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
  • 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