Das eigene PDF

Einführung in die Zend_Pdf-Komponente des Zend Frameworks
Kommentare

Linien, Kreise, Rechtecke zeichnen
Das folgende Beispiel widmet sich dem Zeichnen geometrischer Figuren wie Linien, Kreisen, Ellipsen und Rechtecken. Listing 7 soll hierzu verschiedene Möglichkeiten demonstrieren.

Linien, Kreise, Rechtecke zeichnen

Das folgende Beispiel widmet sich dem Zeichnen geometrischer Figuren wie Linien, Kreisen, Ellipsen und Rechtecken. Listing 7 soll hierzu verschiedene Möglichkeiten demonstrieren. Als Erstes wird ein Rechteck gezeichnet, für das die Art der Linie, die Linienfarbe und die Füllfarbe des Rechtecks gesetzt wird. Die Farben werden hierbei in Graustufen mithilfe von Zend_Pdf_Color_GrayScale gesetzt. Hier mehr Informationen zum Verwenden von Farben.

Nachdem diese Vorbereitungen getroffen wurden, kann das Rechteck mit der drawRectangle()-Methode gezeichnet werden. Diese Methode benötigt vier Angaben für die Koordinaten. Die ersten beiden Parameter geben die Koordinaten der ersten Ecke (in unserem Fall der Ecke oben links) und die nächsten beiden Parameter die Koordinaten der zweiten Ecke (in unserem Fall der Ecke unten rechts) an. Natürlich können Sie das Rechteck auch von unten links nach oben rechts zeichnen; Sie sollten lediglich darauf achten, dass die linke untere Ecke der Seite quasi der Koordinate 1/1 entspricht. Als Nächstes wird ein Kreis gezeichnet. Bei der Art der Linie verwenden wir ein eigenes Muster, das die Linie in unterschiedlichen Abständen unterbricht. Die Farben werden zudem in RGB-Werten mithilfe von Zend_Pdf_Color_Rgb angegeben. Beim Zeichnen eines Kreises mithilfe der drawCircle()-Methode müssen Sie darauf achten, dass die ersten beiden Parameter den Mittelpunkt des Kreises angeben und der dritte Parameter den Radius in Punkten angibt. Im folgenden Schritt werden drei Linien gezeichnet. Wir ändern wieder die Art der Linie und die Farbe. Bei der Verwendung der drawLine()-Methode stellen die ersten beiden Parameter die Koordinaten für den Startpunkt der Linie und die nächsten beiden Parameter die Koordinaten für den Endpunkt der Linie dar.

Jetzt wird es ein wenig komplizierter im Vergleich zu den vorangegangenen Beispielen. Wir zeichnen einen Kreis, der aus mehreren Sektoren besteht. Dies eignet sich z.B. sehr gut für Diagramme. Für das Setzen der Farbe verwenden wir dieses Mal Zend_Pdf_Color_Html, bei dem sowohl Farben im Hexcode als auch in den Farbnamen für Grundfarben angegeben werden können. Beim Zeichnen der Sektoren ist darauf zu achten, dass mithilfe der Parameter Vier und Fünf bei der drawCircle()-Methode der Startwinkel und der Endwinkel angegeben werden. Diese können mithilfe der Konstante M_PI angegeben werden. Nach jedem Zeichnen eines Sektors wird die Farbe für den nächsten Sektor geändert, sodass ein mehrfarbiges Kuchendiagramm entsteht. Als letztes Beispiel wird dann noch eine Ellipse gezeichnet. Die Methode drawEllipse() arbeitet dabei ähnlich wie drawRectangle(). Als Parameter werden also in unserem Beispiel die Koordinaten für die obere linke Ecke und für die untere rechte Ecke übergeben und Zend_Pdf füllt dieses imaginäre Rechteck dann mit der Ellipse.

Wenn Sie dieses fünfte Beispiel aufrufen, fällt Ihnen sicherlich auf, dass die drei Linien vor dem ersten Kreis, aber hinter dem zweiten Kreis und der Ellipse gezeichnet wurden. Daran erkennen Sie, dass die Reihenfolge, in der die einzelnen geometrischen Elemente gezeichnet werden, darüber entscheidet, welches Element vorne steht und welche Elemente gegebenenfalls überdeckt werden.

Noch ein letzter Hinweis zu den geometrischen Formen: Das Tutorial von Alexander Veremyev enthält auch ein weiteres Beispiel, wie Sie mit Polygonen und ein wenig Geometrie auch einen schönen Stern zeichnen können.

Mit Styles arbeiten

Das sechste Beispiel in Listing 8 ähnelt dem vorherigen stark. Es zeichnet dieselben geometrischen Elemente und wird um eine farbige Textzeile ergänzt. Dabei werden wir dieses Mal jedoch mit den so genannten Styles arbeiten. Die Klasse Zend_Pdf_Style bietet die Möglichkeit, Stilangaben für Farben, Linienarten, Linienbreiten, Zeichensätze und Zeichensatzgrößen gesammelt für die Wiederverwendung zu speichern. Hier weitere Infos zu den Styles.

Im oberen Abschnitt des Beispiels definieren wir die diversen Styles für Überschrift, Textzeile, Rechteck, Kreis, Linien, Sektoren und Ellipse. Bei der Definition der Styles für die Sektoren 2 und 3 verwenden wir clone, um ein eigenes Zend_Pdf_Style-Objekt zu erhalten, bei dem sich nur die Füllfarbe von Sektor 1 unterscheidet. Beim Zeichnen der einzelnen Texte und geometrischen Elemente ändern wir dann jeweils den aktuellen Style der Seite mithilfe der setStyle()-Methode. Diese Vorgehensweise erleichtert die Wiederverwendung der Styles besonders dann, wenn verschiedene Styles im Fluss der PDF-Erstellung immer wieder verwendet werden sollen, z.B. beim Wechsel von Überschriften und normalem Text.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -