Zend_Pdf-Pages.xml 4.8 KB

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