1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 20872 -->
<!-- Reviewed: no -->
<sect1 id="zend.pdf.pages">
<title>Arbeiten mit Seiten</title>
<sect2 id="zend.pdf.pages.creation">
<title>Erstellen von Seiten</title>
<para>
Die Seiten in einem <acronym>PDF</acronym> Dokument werden durch
<classname>Zend_Pdf_Page</classname> Instanzen in <classname>Zend_Pdf</classname>
abgebildet.
</para>
<para>
<acronym>PDF</acronym> Seiten werden entweder aus einem vorhandenen
<acronym>PDF</acronym> gelesen oder erstellt indem die <acronym>API</acronym> von
<classname>Zend_Pdf</classname> verwendet wird.
</para>
<para>
Neue Seiten können durch die Instanzierung neuer <classname>Zend_Pdf_Page</classname>
Objekte erstellt werden, entweder direkt oder durch den Aufruf der
<methodname>Zend_Pdf::newPage()</methodname> Methode, die ein
<classname>Zend_Pdf_Page</classname> Objekt zurückgibt.
<methodname>Zend_Pdf::newPage()</methodname> erstellt eine Seite die bereits an ein
Dokument angehängt ist. Ungebundene Seiten können nicht mit verschiedenen
<acronym>PDF</acronym> Dokumenten verwendet werden, sind aber etwas schneller.
<footnote>
<para>
Dies ist eine Einschränkung der aktuellen Zend Framework Version. Sie wird in
zukünftigen Versionen beseitigt werden. Aber ungebundene Seiten werden immer ein
besseres (also optimaleres) Ergebnis für gemeinsame Benutzung in Dokumenten
liefern.
</para>
</footnote>
</para>
<para>
Die <methodname>Zend_Pdf::newPage()</methodname> Methode und der
<classname>Zend_Pdf_Page</classname> Konstruktor benötigen die gleichen Parameter welche
die Größe der Seite spezifizieren. Sie können entweder die Seitengröße ($x, $y) in
Punkten (1/72 Zoll) nehmen oder eine vordefinierte Konstante, die den Seitentyp
repräsentiert:
<itemizedlist>
<listitem><para>Zend_Pdf_Page::SIZE_A4</para></listitem>
<listitem><para>Zend_Pdf_Page::SIZE_A4_LANDSCAPE</para></listitem>
<listitem><para>Zend_Pdf_Page::SIZE_LETTER</para></listitem>
<listitem><para>Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE</para></listitem>
</itemizedlist>
</para>
<para>
Dokumentseiten werden im öffentlichen <varname>$pages</varname> Attribut der
<classname>Zend_Pdf</classname> Klasse abgelegt. Das Attribut enthält ein Array mit
<classname>Zend_Pdf_Page</classname> Objekten und definiert die komplette Instanz und
die Reihenfolge der Seiten. Dieses Array kann wie ein normales <acronym>PHP</acronym>
Array verändert werden:
</para>
<example id="zend.pdf.pages.example-1">
<title>Verwaltung von PDF Dokumentseiten</title>
<programlisting language="php"><![CDATA[
...
// Umgekehrte Seitenreihenfolge
$pdf->pages = array_reverse($pdf->pages);
...
// Füge eine neue Seite hinzu
$pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
// Füge eine neue Seite hinzu
$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);
// Entferne eine bestimmte Seite
unset($pdf->pages[$id]);
...
]]></programlisting>
</example>
</sect2>
<sect2 id="zend.pdf.pages.cloning">
<title>Klonen von Seiten</title>
<para>
Bestehende <acronym>PDF</acronym> Seiten können durch das Erstellen eines neuen
<classname>Zend_Pdf_Page</classname> Objektes geklont werden indem eine existierende
Seite als Parameter angegeben wird:
</para>
<example id="zend.pdf.pages.example-2">
<title>Klonen bestehender Seiten</title>
<programlisting language="php"><![CDATA[
...
// Die Template Seite in einer separaten Variable speichern
$template = $pdf->pages[$templatePageIndex];
...
// Neue Seite hinzufügen
$page1 = new Zend_Pdf_Page($template);
$pdf->pages[] = $page1;
...
// Andere Seite hinzufügen
$page2 = new Zend_Pdf_Page($template);
$pdf->pages[] = $page2;
...
// Die Quell Template Seite von den Dokumenten entfernen
unset($pdf->pages[$templatePageIndex]);
...
]]></programlisting>
</example>
<para>
Das ist nützlich wenn verschiedene Seite mit Hilfe eines Templates erstellt werden
sollen.
</para>
<caution>
<para>
Wichtig! Geklonte Seiten verwenden die gleichen <acronym>PDF</acronym> Ressourcen
mit der Template Seite. Diese kann also nur innerhalb des gleichen Dokuments als
Template Seite verwendet werden. Modifizierte Dokumente können als neue
abgespeichert werden.
</para>
</caution>
</sect2>
</sect1>
|