Zend_Pdf-Pages.xml 4.3 KB

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