Zend_Pdf-Pages.xml 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 20872 -->
  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 <acronym>PDF</acronym> sont représentés par la classe
  10. <classname>Zend_Pdf_Page</classname>
  11. </para>
  12. <para>
  13. Les pages d'un <acronym>PDF</acronym> proviennent d'un <acronym>PDF</acronym> 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. <methodname>Zend_Pdf::newPage()</methodname>qui retourne un objet
  20. <classname>Zend_Pdf_Page</classname>. La différence est que la méthode
  21. <methodname>Zend_Pdf::newPage()</methodname> 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 <acronym>PDF</acronym>, 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 <methodname>Zend_Pdf::newPage()</methodname> 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 <varname>$pages</varname> 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 <acronym>PDF</acronym> 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 <acronym>PDF</acronym> 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>