Zend_Pdf-Pages.xml 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15157 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.pdf.pages">
  5. <title>Les pages d'un document</title>
  6. <sect2 id="zend.pdf.pages.creation">
  7. <title>Création de page</title>
  8. <para>
  9. Les pages d'un document PDF sont représentés par la classe
  10. <classname>Zend_Pdf_Page</classname>
  11. </para>
  12. <para>
  13. Les pages d'un PDF proviennent d'un PDF existant, ou sont créées à partir de
  14. rien.
  15. </para>
  16. <para>
  17. Une nouvelle page peut-être obtenu en créant un nouvel objet
  18. <classname>Zend_Pdf_Page</classname> ou en appelant la méthode
  19. <classname>Zend_Pdf::newPage()</classname>qui retourne un objet
  20. <classname>Zend_Pdf_Page</classname>. La différence est que la méthode
  21. <classname>Zend_Pdf::newPage()</classname> crée une page directement attachée au
  22. document. A la différence des pages non attachées à un document, elle ne peut-être
  23. utilisée dans plusieurs documents PDF, mais est un peu plus performante. <footnote>
  24. <para>
  25. C'est une limitation de la version courante du module
  26. <classname>Zend_Pdf</classname>. Ce sera corrigé dans une future version. Mais
  27. les pages non attachées à un document donneront toujours de meilleurs résultats
  28. pour partager une page entre plusieurs documents.
  29. </para>
  30. </footnote>. C'est à vous de choisir quel approche doit-être utilisée.
  31. </para>
  32. <para>
  33. Les méthodes <classname>Zend_Pdf::newPage()</classname> et
  34. <classname>Zend_Pdf_Page</classname> prennent le même paramètre. C'est la taille de la
  35. page ($x, $y) en point (1/72 inch soit 0,352778 mm), ou une constante prédéfinie, qui
  36. correspond au format du papier : <itemizedlist>
  37. <listitem>
  38. <para>Zend_Pdf_Page::SIZE_A4</para>
  39. </listitem>
  40. <listitem>
  41. <para>Zend_Pdf_Page::SIZE_A4_LANDSCAPE</para>
  42. </listitem>
  43. <listitem>
  44. <para>Zend_Pdf_Page::SIZE_LETTER</para>
  45. </listitem>
  46. <listitem>
  47. <para>Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE</para>
  48. </listitem>
  49. </itemizedlist>
  50. </para>
  51. <para>
  52. Les pages du document sont stockées dans l'attribut public <code>$pages</code> de
  53. la classe <classname>Zend_Pdf</classname>. C'est un tableau d'objet
  54. <classname>Zend_Pdf_Page</classname>. Il définit l'ensemble des pages, ainsi que l'ordre
  55. de celle-ci et peut-être manipulé comme un tableau classique :
  56. </para>
  57. <example id="zend.pdf.pages.example-1">
  58. <title>Gestion des pages d'un document PDF</title>
  59. <programlisting language="php"><![CDATA[
  60. ...
  61. // Inverse l'ordre des pages
  62. $pdf->pages = array_reverse($pdf->pages);
  63. ...
  64. // Ajoute une nouvelle page
  65. $pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
  66. // Ajoute une nouvelle page
  67. $pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);
  68. // Retire la page spécifiée
  69. unset($pdf->pages[$id]);
  70. ...
  71. ]]></programlisting>
  72. </example>
  73. </sect2>
  74. <sect2 id="zend.pdf.pages.cloning">
  75. <title>Clonage de page</title>
  76. <para>
  77. Les pages existantes d'un PDF peuvent être clonées en créant un nouvel objet
  78. <classname>Zend_Pdf_Page</classname> avec la page existante comme paramètre :
  79. </para>
  80. <example id="zend.pdf.pages.example-2">
  81. <title>Cloner une page existante</title>
  82. <programlisting language="php"><![CDATA[
  83. ...
  84. // Stocke le modèle dans une variable séparée
  85. $template = $pdf->pages[$templatePageIndex];
  86. ...
  87. // Ajoute une nouvelle page
  88. $page1 = new Zend_Pdf_Page($template);
  89. $pdf->pages[] = $page1;
  90. ...
  91. // Ajoute une autre page
  92. $page2 = new Zend_Pdf_Page($template);
  93. $pdf->pages[] = $page2;
  94. ...
  95. // Enlève la page modèle du document
  96. unset($pdf->pages[$templatePageIndex]);
  97. ...
  98. ]]></programlisting>
  99. </example>
  100. <para>C'est pratique si plusieurs pages doivent être créées sur le même modèle.</para>
  101. <caution>
  102. <para>
  103. Important ! La page clonée partage quelques ressources PDF avec la page
  104. modèle, donc ceci doit être utilisé seulement dans le même document qu'une page
  105. modèle. Le document modifié peut être sauvegardé comme nouveau document.
  106. </para>
  107. </caution>
  108. </sect2>
  109. </sect1>