Modul PDF: Unterschied zwischen den Versionen

Aus bafbal.de
Zur Navigation springen Zur Suche springen
Zeile 201: Zeile 201:
 
==#pdf_insertpic==
 
==#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.
+
Mit #pdf_insertpic wird ein Bild geladen und in das PDF eingefügt.
  
 
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.
 
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.
Zeile 207: Zeile 207:
 
'''Parameter'''
 
'''Parameter'''
  
 +
* cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
 
* d ("distance") - Abstand zwischen Text und Bild in mm; Default 0; Funktionen werden ersetzt. Parameter wird nur bei relativer Positionierung berücksichtigt.
 
* d ("distance") - Abstand zwischen Text und Bild in mm; Default 0; Funktionen werden ersetzt. Parameter wird nur bei relativer Positionierung berücksichtigt.
 +
* fn ("FileName") - Dateiname der Datei, aus welcher das Bild geladen wird.
 
* h - Höhe des Bildes; Funktionen werden ersetzt.
 
* 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.
 
* 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.
 
* w ("width") - Breite des Bildes in mm; Funktionen werden ersetzt.
 
* x - X-Position des Bildes; Funktionen werden ersetzt.
 
* x - X-Position des Bildes; Funktionen werden ersetzt.
Zeile 217: Zeile 218:
 
'''Beispiel'''
 
'''Beispiel'''
  
#pdf_loadpic  n=logo  fn=i:\temp\logo_firma.BMP
+
  #pdf_insertpic  n=logo  w=60  h=40  x=50  y=50   fn=i:\temp\logo_firma.BMP
  #pdf_insertpic  n=logo  w=60  h=40  x=50  y=50
 
  
 
==#pdf_newpage==
 
==#pdf_newpage==

Version vom 7. Oktober 2022, 10:58 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
  • #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
  • fn ("FileName") - dateiname, unter dem das Dokument gespeichert wird; Funktionen werden ersetzt. Ist der Parameter leer, so wird ein Dateiauswahldialog geöffnet.
  • pal (PageLandscape) - Wenn Y, dann wird die Seite im Querformat erstellt; Default N; Funktionen werden ersetzt

Beispiel

#pdf_start  fn=$DIR(doc)\test.pdf
#pdf_text  c="Hello World"
#pdf_stop

#pdf_stop

Beendet das PDF-Dokument und speichert es.

Parameter

  • cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
  • o ("open") - Wenn Y, wird das PDF-Dokument nach der Erstellung geöffnet; default N; Funktionen werden ersetzt

Beispiel

#pdf_start  fn=$DIR(doc)\test.pdf
#pdf_text  c="Hello World"
#pdf_stop

#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

#pdf_font   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, oberen Ecke. Die untere Ecke bei einem stehenden DIN A4-Blatt liegt also bei 297 mm, die Y-Position erhöht 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
  • d ("distance") - Abstand zwischen Text und Bild in mm; Default 0; Funktionen werden ersetzt. Parameter wird nur bei relativer Positionierung berücksichtigt.
  • fn ("FileName") - Wenn gesetzt, wird das interne Bitmap nach der Rotation unter diesem Dateinamen gespeichert. Primär für Debugging; Funktionen werden ersetzt
  • h - Höhe des Bildes; Funktionen werden ersetzt; Funktionen werden ersetzt.
  • rot - Rotation; default 0; Funktionen werden ersetzt; eignet sich primär für 90, 180 und 270
  • sx ("size x") - Breite des internen Bitmaps in Pixeln; Funktionen werden ersetzt; default 800
  • sy ("size y") - Höhe des internen Bitmaps in Pixeln; Funktionen werden ersetzt; default 800
  • w - Breite (und Höhe) des internen Bildes; default 800; Funktionen werden ersetzt
  • x - X-Position des Bildes; Funktionen werden ersetzt.
  • y - Y-Position des Bildes; Funktionen werden ersetzt.
  • z - Wert, der als Barcode angezeigt wird; Funktionen werden ersetzt. Bitte die Beschränkungen des jeweiligen Barcodes beachten.

Beispiel

#pdf_createbarcode   typ=code_128   z=$VAL(1)   rot=90   x=202    y=180   w=5   h=80   sx=800   sy=16   fn_=c:\temp\barcode.bmp

#pdf_insertpic

Mit #pdf_insertpic wird ein Bild geladen und in das PDF eingefügt.

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

  • cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
  • d ("distance") - Abstand zwischen Text und Bild in mm; Default 0; Funktionen werden ersetzt. Parameter wird nur bei relativer Positionierung berücksichtigt.
  • fn ("FileName") - Dateiname der Datei, aus welcher das Bild geladen wird.
  • 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.
  • 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_insertpic  n=logo   w=60   h=40   x=50  y=50   fn=i:\temp\logo_firma.BMP

#pdf_newpage

Beginnt eine neue Seite

Parameter

  • cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt

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

  • cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt

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
  • 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.
  • 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
  • cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
  • 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.
  • cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, 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