PDF verfügt über umfangreiche Möglichkeiten für Vektorgrafik. Wir schauen uns mal die wichtigsten an, angefangen mit einfachen Strichen.
Zunächst einmal sollten wir festlegen, wie dick der Strich überhaupt sein soll. Dies geschieht mit der Anweisung w
. Die Anweisung erwartet einen Parameter mit der gewünschten Strichdicke in Point.
Beispiel:
1.5 w
Damit haben wir eine Strichdicke von 1,5pt.
Es ist auch möglich, 0 anzugeben. Das bewirkt nicht, dass keine Striche gezeigt werden, sondern diese werden so dünn wie auf dem jeweiligen Gerät möglich dargestellt. In hochauflösendem Druck kann das aber zu praktisch unsichtbaren Linien führen, weswegen von dieser Einstellung abgeraten wird.
Striche müssen nicht unbedingt durchgezogen sein. Ein Strichmuster ist ebenfalls möglich. Dazu dient die Anweisung d
. Sie erwartet zwei Parameter. Das Strichmuster und die Phase.
Das Muster wird als Array mit keiner, einer oder zwei Zahlen dargestellt. Dies hat unterschiedliche Bedeutungen:
Bei einem leeren Array gibt es kein Muster. Die Linie wird durchgezogen.
Bei einem Array mit einer Zahl definiert diese Zahl die Länge der Striche und der Unterbrüche in Point.
Bei einem Array mit zwei Zahlen definiert die erste Zahl die Länge der Striche, die zweite Zahl die Länge der Unterbrüche in Point.
Die Phase verschiebt den Startpunkt des Musters. Sie wird durch eine Zahl dargestellt, welche eine Distanz in Point angibt, die im Muster am Anfang übersprungen wird. Wenn wir zum Beispiel eine Strichlänge von 12pt und eine Phase von 6pt definieren, so ist der erste Strich 6pt lang, alle weitern 12pt.
Beispiele:
1 w [] 0 d
Dies ergibt eine durchgezogene, 1pt breite Linie.
1 w [6] 0 d
Dies ergibt eine gestrichelte, 1pt breite Linie mit 6pt langen Linien und Unterbrüchen.
1 w [12 6] 4 d
Dies ergibt eine gestrichelte, 1pt breite Linie mit 12pt langen Linien, und 6pt langen Unterbrüchen. Die erste Linie ist nur 8pt lang.
Gepunktete Linien sind ein klein weniger komplizierter. Ich behandle sie im Kapitel Erweiterte Linienparameter.
Um eine Gerade zu zeichnen, benötigen wir drei Anweisungen. Die Anweisung m
legt den Startpunkt fest, die Anweisung l
den Endpunkt (das ist ein kleines L, nicht ein grosses i). Beide Anweisungen erwarten zwei Paramter mit der X und der Y Koordinate. Als drittes folgt die Anweisung S
, welches die Zeichenoperation abschliesst.
Beispiel:
72 72 m 144 144 l S
Damit zeichnen wir links unten auf der Seiten eine 45° schräge Linie in Richtung rechts oben.
Wenn wir eine gerade Linie definiert haben, können wir eine weitere Linie direkt anhängen. Dazu wiederholen wir einfach die Anweisung l
mit den Koordinaten des neuen Endpunkts als Parameter. Der Endpunkt der vorherigen Linie dient als Startpunkt der neuen Linie. Wichtig ist, dass die Anweisung S
erst ganz am Schluss steht.
Beispiel:
72 72 m 144 144 l 216 72 l S
Dies zeichnet nun zwei Linien, die zusammen einen nach oben gerichteten Winkel darstellen.
Anstelle gerader Linien können wir auch Kurven zeichnen. PDF unterstützt zu diesem Zweck kubische Bézierkurven. Eine genaue Erklärung dazu würde den Rahmen dieses Textes sprengen. Ich verweise dafür auf andere Nachschlagewerke. Es gibt auch einen Artikel auf Wikipedia.
Vereinfacht gesagt werden für die Kurve vier Punkte definiert: P0, P1, P2 und P3. Die Kurve wird von P0 in einem Bogen nach P3 gezogen. P1 und P2 definieren, in welche Richtung und mit wie viel Ausschlag der Bogen gezogen wird: Der Bogen verlässt P0 erst in Richtung P1, und zwar mit um so mehr „Schwung“, je weiter entfernt P1 von P0 liegt. Umgekehrt muss der Bogen letztlich aus Richtung P2 auf den Punkt P3 treffen, wiederum mit um so mehr „Schwung“, je weiter P2 von P3 entfernt ist.
Ähnlich wie bei geraden Linien dient die Anweisung m
zur Definierung des Startpunkts (P0), und die Anweisung S
zum Abschluss der Zeichenoperation. Die Kurve selbst wird durch die Anweisung c
definiert. Diese Anweisung erwartet 6 Parameter, nämlich nacheinander die X und Y Koordinate der Punkte P1, P2 und P3.
Beispiel:
100 100 m 133.3 150 166.7 150 200 100 c S
Dies zeichnet einen flachen, nach oben gerichteten Bogen.
Kurven, die einen 90° oder 180° Bogen von einer der Positionen 0°, 90°, 180° oder 270° aus machen, lassen sich recht leicht als Bézierkurven darstellen. Allerdings ergibt dies keine perfekten Kreissegmente, denn solche lassen sich mit Bézierkurven schlicht nicht zeichnen. Leider haben wir nichts anderes zur Verfügung. Der 90° Bogen hat dabei eine kleinere Abweichung von der perfekten Linie.
Bei einer 90°-Kurve sind die Punkte folgendermassen verteilt:
Der Abstand zwischen P0 und P1 bzw. P2 und P3 ist dabei \(r\frac{4}{3}(\sqrt{2}-1)\) (ungefähr r × 0,5523), wobei r der Radius ist.
Bei einer 180°-Kurve sind die Punkte folgendermassen verteilt:
Der Abstand zwischen P0 und P1 bzw. P2 und P3 ist dabei \(r\frac{4}{3}\) (ungefähr r × 1,3333), wobei r der Radius ist.
Wie gesagt ist die Abweichung von der perfekten Linie hier höher, als bei der 90°-Kurve. Eine bessere 180°-Kurve kann man erreichen, indem man zwei 90°-Kurven aneinanderhängt.
Beispiele:
300 100 m 300 233.333 100 233.333 100 100 c S
Ein direkt gezeichneter Halbkreis.
300 100 m 300 155.23 255.23 200 200 200 c 144.77 200 100 155.23 100 100 c S
Ein Halbkreis aus zwei Viertelkreisen.
Kurven lassen sich – genau wie gerade Linien – aneinanderhängen. Ebenso ist es möglich, gerade Linien und Kurven zu mischen.
Beispiel:
100 100 m 100 200 l 110 200 l 110 280 190 280 190 200 c 200 200 l 200 100 l S
Dies zeichnet einen kleinen Block mit Kuppel.
Diskussion