Modul PDF: Unterschied zwischen den Versionen

Aus bafbal.de
Zur Navigation springen Zur Suche springen
Zeile 412: Zeile 412:
 
==#pdf_gdef==
 
==#pdf_gdef==
  
 
+
Definiert die Werte für ein Grid
  
 
'''Parameter'''
 
'''Parameter'''
Zeile 418: Zeile 418:
 
* cc ("ColumnCount") - Anzahl der Spalten; default 1; Funktionen werden ersetzt.
 
* cc ("ColumnCount") - Anzahl der Spalten; default 1; Funktionen werden ersetzt.
 
* cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
 
* cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
 +
* cw ("ColumnWidth") - Breite der einzelnen Spalten (also cw1, cw2, cw3...); default 10, Funktionen werden ersetzt
 +
* d ("distance") - Verändert vor dem Zeichnen der Linie die aktuelle Y-Position; default 0, Funktionen werden ersetzt
 +
* l ("left") - Linker Rand in mm des Grid vom linken Blattrand; default 18, Funktionen werden ersetzt
 +
* ml ("margin left") - Default-Abstand in mmd es Textes im Grid von der linken Linie des Gitters (Linienmitte); default 1, Funktionen werden ersetzt
 +
* mr ("margin right") - Default-Abstand in mm des Textes im Grid von der rechten Linie des Gitters (Linienmitte); default 1, Funktionen werden ersetzt
 +
* mt ("margin top") - Default-Abstand in mm des Textes im Grid von der oberen Linie des Gitters (Linienmitte); default 1, Funktionen werden ersetzt
  
 
'''Beispiel'''
 
'''Beispiel'''
  
 +
#pdf_gdef  cc=3  cw1=50  cw2=60  cw3=70 
 +
#pdf_grow  c1=eins  c2="[b]zwei"  c3=drei  a3=r
 +
#pdf_grow  c1=eins  c2="[b]zwei"  cs2=2  c3=drei  a3=r
 +
#pdf_grow  c1=[s=12]eins  cs1=3  c2="[b]zwei"  c3=drei  a3=r
 +
#pdf_gend
  
 
==#pdf_grow==
 
==#pdf_grow==

Version vom 25. Januar 2023, 09:50 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 und fügt ihn in das PDF ein.

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  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
    • l - linksbündig
    • j ("join") - Blocksatz
    • r - rechtsbündig
  • c ("caption") - Text, der ausgegeben werden soll; Funktionen werden doppelt ersetzt
  • cn ("caption no") - Text, der ausgegeben werden soll; Funktionen werden nicht doppelt ersetzt
  • cl ("color") - Schriftfarbe; Default schwarz
  • cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
  • d ("distance") - Abstand der Absätze, default halbe Schriftgröße
  • 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.)
  • s ("size") - Schriftgröße; Funktionen werden ersetzt, Default 10
  • 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.

Codes Fontweight

  • [/b] - Font normal
  • [b] - Font fett / bold
  • [b=thin]
  • [b=extralight]
  • [b=light]
  • [b=normal]
  • [b=medium]
  • [b=semibold]
  • [b=bold]
  • [b=extrabold]
  • [b=black]
  • [b=extrablack]

Codes Fontsland

  • [/i] oder [i=upright] - aufrecht / Upright
  • [i] oder [i=italic] - kursiv / Italic
  • [i=oblique]

Codes Align

  • [a=l] linksbündig
  • [a=r] rechtsbündig
  • [a=c] zentriert
  • [a=j] Blocksatz

Codes Schrift

  • [s=12] - Schriftgröße 12 Punkt (auch andere Größen möglich)
  • [cl=red] - Schriftfarbe rot (auch andere Farben möglich)
  1. pdf_drawdef

Definiert die Werte für Zeichenoperationen

Parameter

  • cl ("color") - Farbe, als Hex-Wert oder als Farbkonstante
  • cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
  • w ("width") - Breite des Stiftes; Funktionen werden ersetzt, default 1
  • y - Typ der operation
    • stroke - Umriss
    • fill - Füllung
    • strokeandfill oder both - Umriss und Füllung

Beispiel

#pdf_drawdef    cl=red
#pdf_line   x1=30   x2=150   y1=250   y2=200   w=1
#pdf_line    w=0,1   d=5


#pdf_drawdef

Definiert Werte vor dem Zeichnen einer Linie

Parameter

  • cl ("color") - Farbe der Zeichenoperation; Default schwarz
  • cnd ("condition") - Wenn Y, wird die Prozedur ausgeführt; default Y, Funktionen werden ersetzt
  • w ("width") - Breite des Stiftes
  • y - Typ
    • stroke - nur Umriss
    • fill - Füllung
    • strokeandfill oder both - Umriss und Füllung


Beispiel

#pdf_drawdef    cl=red   w=3
#pdf_line   x1=30   x2=150   y1=250   y2=200   w=1
#pdf_line    w=0,1   d=5

#pdf_line

Zeichnet eine Linie

Parameter

  • 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
  • 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_drawdef    cl=red   w=3
#pdf_line   x1=30   x2=150   y1=250   y2=200   w=1
#pdf_line    w=0,1   d=5


#pdf_rect

Zeichnet eine geometrische Figur

Parameter

  • 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
  • h - Höhe; Funktionen werden ersetzt, default 0
  • j - Typ (y ist bereits belegt...); default rect
    • rect oder rectangle - Rechteck
    • round oder roundrect - Rechteck mit abgerundeten Ecken
    • circle oder oval - Ellipse
  • rad ("radius") - Radius bei roundrect; Funktionen werden ersetzt, default 1
  • w - Breite; Funktionen werden ersetzt, default 0
  • x - X-Position als Distanz vom linken Rand; Funktionen werden ersetzt, default 0
  • y - Y-Position als Distanz vom linken Rand; Funktionen werden ersetzt, default 0


Beispiel

#pdf_drawdef    cl=red   w=3
#pdf_rect   x=30   y=150   w=250   h=200

#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_gdef

Definiert die Werte für ein Grid

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
  • cw ("ColumnWidth") - Breite der einzelnen Spalten (also cw1, cw2, cw3...); default 10, Funktionen werden ersetzt
  • d ("distance") - Verändert vor dem Zeichnen der Linie die aktuelle Y-Position; default 0, Funktionen werden ersetzt
  • l ("left") - Linker Rand in mm des Grid vom linken Blattrand; default 18, Funktionen werden ersetzt
  • ml ("margin left") - Default-Abstand in mmd es Textes im Grid von der linken Linie des Gitters (Linienmitte); default 1, Funktionen werden ersetzt
  • mr ("margin right") - Default-Abstand in mm des Textes im Grid von der rechten Linie des Gitters (Linienmitte); default 1, Funktionen werden ersetzt
  • mt ("margin top") - Default-Abstand in mm des Textes im Grid von der oberen Linie des Gitters (Linienmitte); default 1, Funktionen werden ersetzt

Beispiel

#pdf_gdef   cc=3   cw1=50   cw2=60   cw3=70  
#pdf_grow   c1=eins   c2="[b]zwei"   c3=drei   a3=r
#pdf_grow   c1=eins   c2="[b]zwei"   cs2=2   c3=drei   a3=r
#pdf_grow   c1=[s=12]eins   cs1=3   c2="[b]zwei"   c3=drei   a3=r
#pdf_gend

#pdf_grow

Parameter

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

Beispiel

Siehe #pdf_gdef

#pdf_gend

Parameter

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

Beispiel

Siehe #pdf_gdef

$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


Umfangreicheres Beispiel

Erläuterung im Video: PDFs erstellen (8:11)

#frm  c="c_test_pdf"   y=console

#pdf_start   fn=$DIR(doc)test.pdf 

#pdf_font   b=Y
#pdf_texto   c=Login
#pdf_texto   c=Vorname  l=80
#pdf_text   c=Nachname   l=120
#pdf_sety   d=2
#pdf_font   b=N

#cmd #pdf_texto   c=$DATA(dat,login)
#cmd #pdf_texto   c=$DATA(dat,firstname)  l=80
#cmd #pdf_text   c=$DATA(dat,lastname)   l=120

#sql select login, firstname, lastname from user_user
#sql_open   n=dat   er=1 

#pdf_insertpic   w=60   h=40   x=18   y=50   fn=i:\temp\bafbal_big.png
#pdf_createbarcode   typ=qr   z=https://bafbal.de   x=100   y=50   w=40   h=40   sx=800

#pdf_sety   y=100
#text Dies ist ein Text mit mehreren Zeilen
#text mit [b]fett[/b] und [i]kursiv[/i][a=r]
#text auch mal eine Zeile rechtsbündig[a=l]
#text [s=18]sowie größer und [cl=red]in Farbe.
#pdf_multibb   c=$TEXT(1)

#pdf_stop   o=Y

#cout  c="c_test_pdf executed"