Zend_Pdf-Usage.xml 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <sect1 id="zend.pdf.usage">
  2. <title>Пример использования модуля Zend_Pdf <!-- Zend_Pdf module usage example.--></title>
  3. <para>
  4. Этот раздел дает пример использования модуля.
  5. <!--
  6. This section provides an example of module usage.
  7. -->
  8. </para>
  9. <para>
  10. Этот пример может быть найден в файле <filename>demos/Zend/Pdf/demo.php</filename>.
  11. <!--
  12. This example can be found in a <filename>demos/Zend/Pdf/demo.php</filename> file.
  13. -->
  14. </para>
  15. <para>
  16. Там же есть файл <filename>test.pdf</filename>, который может использоваться
  17. с этим примером для тестирования.
  18. <!--
  19. There are also <filename>test.pdf</filename> file, which can be used with this demo
  20. for test purposes.
  21. -->
  22. </para>
  23. <example>
  24. <title>Демонстрация использования модуля Zend_Pdf<!-- Zend_Pdf module usage demo.--></title>
  25. <programlisting language="php"><![CDATA[<?php
  26. /**
  27. * @package Zend_Pdf
  28. * @subpackage demo
  29. */
  30. /** Zend_Pdf */
  31. require_once 'Zend/Pdf.php';
  32. if (!isset($argv[1])) {
  33. echo "USAGE: php demo.php <pdf_file> [<output_pdf_file>]\n";
  34. exit;
  35. }
  36. try {
  37. $pdf = Zend_Pdf::load($argv[1]);
  38. } catch (Zend_Pdf_Exception $e) {
  39. if ($e->getMessage() == 'Can not open \'' . $argv[1] . '\' file for reading.') {
  40. // Создается новый PDF, если файл не существует
  41. $pdf = new Zend_Pdf();
  42. if (!isset($argv[2])) {
  43. // Полная перезапись файла вместо обновления
  44. $argv[2] = $argv[1];
  45. }
  46. } else {
  47. // Бросок исключения, если это не исключение "Can't open file"
  48. throw $e;
  49. }
  50. }
  51. //------------------------------------------------------------------------------------
  52. // Изменить порядок страниц на обратный
  53. $pdf->pages = array_reverse($pdf->pages);
  54. // Создание нового стиля
  55. $style = new Zend_Pdf_Style();
  56. $style->setFillColor(new Zend_Pdf_Color_RGB(0, 0, 0.9));
  57. $style->setLineColor(new Zend_Pdf_Color_GrayScale(0.2));
  58. $style->setLineWidth(3);
  59. $style->setLineDashingPattern(array(3, 2, 3, 4), 1.6);
  60. $style->setFont(new Zend_Pdf_Font_Standard(Zend_Pdf_Const::FONT_HELVETICA_BOLD), 32);
  61. // Создание нового объекта изображения
  62. $stampImage = Zend_Pdf_ImageFactory::factory(dirname(__FILE__) . '/stamp.jpg');
  63. // Обозначение страницы как измененной
  64. foreach ($pdf->pages as $page){
  65. $page->saveGS();
  66. $page->setStyle($style);
  67. $page->rotate(0, 0, M_PI_2/3);
  68. $page->saveGS();
  69. $page->clipCircle(550, -10, 50);
  70. $page->drawImage($stampImage, 500, -60, 600, 40);
  71. $page->restoreGS();
  72. $page->drawText('Modified by Zend Framework!', 150, 0);
  73. $page->restoreGS();
  74. }
  75. // Добавление новой страницы, сгенерированной объектом Zend_Pdf
  76. // (страница прикреплена к определенному документу)
  77. $pdf->pages[] = ($page1 = $pdf->newPage('A4'));
  78. // Добавление новой страницы, сгенерированной объектом Zend_Pdf_Page
  79. // (страница не прикреплена к документу)
  80. $pdf->pages[] = ($page2 = new Zend_Pdf_Page(Zend_Pdf_Const::PAGESIZE_LETTER_LANDSCAPE));
  81. // Создание нового шрифта
  82. $font = new Zend_Pdf_Font_Standard(Zend_Pdf_Const::FONT_HELVETICA);
  83. // Применение шрифта и написание текста
  84. $page1->setFont($font, 36);
  85. $page1->drawText('Helvetica 36 text string', 60, 500);
  86. // Использование объекта шрифта для других страниц
  87. $page2->setFont($font, 24);
  88. $page2->drawText('Helvetica 24 text string', 60, 500);
  89. // Использование другого шрифта
  90. $page2->setFont(new Zend_Pdf_Font_Standard(Zend_Pdf_Const::FONT_TIMES_ROMAN), 32);
  91. $page2->drawText('Times-Roman 32 text string', 60, 450);
  92. // Рисование прямоугольника
  93. $page2->setFillColor(new Zend_Pdf_Color_GrayScale(0.8));
  94. $page2->setLineColor(new Zend_Pdf_Color_GrayScale(0.2));
  95. $page2->setLineDashingPattern(array(3, 2, 3, 4), 1.6);
  96. $page2->drawRectangle(60, 400, 400, 350);
  97. // Рисование круга
  98. $page2->setLineDashingPattern(Zend_Pdf_Const::LINEDASHING_SOLID);
  99. $page2->setFillColor(new Zend_Pdf_Color_RGB(1, 0, 0));
  100. $page2->drawCircle(85, 375, 25);
  101. // Рисование секторов
  102. $page2->drawCircle(200, 375, 25, 2*M_PI/3, -M_PI/6);
  103. $page2->setFillColor(new Zend_Pdf_Color_CMYK(1, 0, 0, 0));
  104. $page2->drawCircle(200, 375, 25, M_PI/6, 2*M_PI/3);
  105. $page2->setFillColor(new Zend_Pdf_Color_RGB(1, 1, 0));
  106. $page2->drawCircle(200, 375, 25, -M_PI/6, M_PI/6);
  107. // Рисование элипса
  108. $page2->setFillColor(new Zend_Pdf_Color_RGB(1, 0, 0));
  109. $page2->drawEllipse(250, 400, 400, 350);
  110. $page2->setFillColor(new Zend_Pdf_Color_CMYK(1, 0, 0, 0));
  111. $page2->drawEllipse(250, 400, 400, 350, M_PI/6, 2*M_PI/3);
  112. $page2->setFillColor(new Zend_Pdf_Color_RGB(1, 1, 0));
  113. $page2->drawEllipse(250, 400, 400, 350, -M_PI/6, M_PI/6);
  114. // Рисование и заполнение многоугольника
  115. $page2->setFillColor(new Zend_Pdf_Color_RGB(1, 0, 1));
  116. $x = array();
  117. $y = array();
  118. for ($count = 0; $count < 8; $count++) {
  119. $x[] = 140 + 25*cos(3*M_PI_4*$count);
  120. $y[] = 375 + 25*sin(3*M_PI_4*$count);
  121. }
  122. $page2->drawPolygon($x, $y,
  123. Zend_Pdf_Const::SHAPEDRAW_FILLNSTROKE,
  124. Zend_Pdf_Const::FILLMETHOD_EVENODD);
  125. // Рисование линии
  126. $page2->setLineWidth(0.5);
  127. $page2->drawLine(60, 375, 400, 375);
  128. //------------------------------------------------------------------------------------
  129. if (isset($argv[2])) {
  130. $pdf->save($argv[2]);
  131. } else {
  132. $pdf->save($argv[1], true /* update */);
  133. }
  134. ]]></programlisting>
  135. </example>
  136. </sect1>
  137. <!--
  138. vim:se ts=4 sw=4 et:
  139. -->