Zend_Pdf-Pages.xml 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 15103 -->
  4. <sect1 id="zend.pdf.pages">
  5. <title>ページの操作</title>
  6. <sect2 id="zend.pdf.pages.creation">
  7. <title>ページの作成</title>
  8. <para>
  9. PDF ドキュメントのページは、<classname>Zend_Pdf</classname> の
  10. <classname>Zend_Pdf_Page</classname> クラスで表されます。
  11. </para>
  12. <para>
  13. PDF ページは既存の PDF から読み込むこともできますし、
  14. 新しく作成することもできます。
  15. </para>
  16. <para>
  17. 新しいページを取得するには、直接 <classname>Zend_Pdf_Page</classname>
  18. オブジェクトを作成するか、<classname>Zend_Pdf::newPage()</classname>
  19. メソッドをコールします。このメソッドは <classname>Zend_Pdf_Page</classname>
  20. オブジェクトを返します。<classname>Zend_Pdf::newPage()</classname>
  21. の場合は、すでにドキュメントにアタッチされているページを作成するという点が異なります。
  22. こうするとそのページを複数の PDF ドキュメントで使いまわすことができませんが、
  23. 多少高速になります
  24. <footnote>
  25. <para>
  26. これは現在のバージョンの ZF の制限事項であり、
  27. 将来のバージョンではなくなる予定です。
  28. しかし、ドキュメント間でページを共有するには、
  29. アタッチされていないページのほうが常によい結果となるでしょう。
  30. </para>
  31. </footnote>。どちらの手法を使用するかはあなたしだいです。
  32. </para>
  33. <para>
  34. <classname>Zend_Pdf::newPage()</classname> メソッドおよび <classname>Zend_Pdf_Page</classname>
  35. のコンストラクタは、どちらも同じ形式のパラメータを受け取ります。
  36. ページサイズを ($x, $y) 形式のポイント数 (1/72 インチ)
  37. で表したものか、定義済みの定数のうちのいずれかになります。
  38. 以下の定数が定義されています。
  39. <itemizedlist>
  40. <listitem>
  41. <para>Zend_Pdf_Page::SIZE_A4</para>
  42. </listitem>
  43. <listitem>
  44. <para>Zend_Pdf_Page::SIZE_A4_LANDSCAPE</para>
  45. </listitem>
  46. <listitem>
  47. <para>Zend_Pdf_Page::SIZE_LETTER</para>
  48. </listitem>
  49. <listitem>
  50. <para>Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE</para>
  51. </listitem>
  52. </itemizedlist>
  53. </para>
  54. <para>
  55. ドキュメントのページは、<classname>Zend_Pdf</classname> クラスの public メンバである
  56. <code>$pages</code> に保存されます。これは <classname>Zend_Pdf_Page</classname>
  57. オブジェクトの配列です。これによってページの並び順も定義され、
  58. 一般的な配列と同じように操作することができます。
  59. </para>
  60. <example id="zend.pdf.pages.example-1">
  61. <title>PDF ドキュメントのページの操作</title>
  62. <programlisting role="php"><![CDATA[
  63. ...
  64. // ページの並び順を反転します
  65. $pdf->pages = array_reverse($pdf->pages);
  66. ...
  67. // 新しいページを追加します
  68. $pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
  69. // 新しいページを追加します
  70. $pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);
  71. // 指定したページを削除します
  72. unset($pdf->pages[$id]);
  73. ...
  74. ]]>
  75. </programlisting>
  76. </example>
  77. </sect2>
  78. <sect2 id="zend.pdf.pages.cloning">
  79. <title>ページの複製</title>
  80. <para>
  81. 既存の PDF ページを複製するには、新しい <classname>Zend_Pdf_Page</classname>
  82. オブジェクトを作成する際に既存のページをパラメータとして指定します。
  83. </para>
  84. <example id="zend.pdf.pages.example-2">
  85. <title>既存のページの複製</title>
  86. <programlisting role="php"><![CDATA[
  87. ...
  88. // テンプレートページを別の変数に格納します
  89. $template = $pdf->pages[$templatePageIndex];
  90. ...
  91. // 新しいページを追加します
  92. $page1 = new Zend_Pdf_Page($template);
  93. $pdf->pages[] = $page1;
  94. ...
  95. // 別のページを追加します
  96. $page2 = new Zend_Pdf_Page($template);
  97. $pdf->pages[] = $page2;
  98. ...
  99. // テンプレートページをドキュメントから削除します
  100. unset($pdf->pages[$templatePageIndex]);
  101. ...
  102. ]]>
  103. </programlisting>
  104. </example>
  105. <para>
  106. これは、ひとつのテンプレートから複数のページを作成したい場合に便利です。
  107. </para>
  108. <caution>
  109. <para>
  110. 注意! 複製されたページは、テンプレートページと同じ
  111. PDF リソースを共有します。つまり、
  112. テンプレートページと同じドキュメントしか使用することができません。
  113. ドキュメントを修正したら、新しいページとして保存することができます。
  114. </para>
  115. </caution>
  116. </sect2>
  117. </sect1>
  118. <!--
  119. vim:se ts=4 sw=4 et:
  120. -->