1 <sect1 id="zend.pdf.drawing">
2 <title>Рисование<!-- Drawing. --></title>
4 <sect2 id="zend.pdf.drawing.geometry">
5 <title>Геометрия<!-- Geometry.--></title>
7 PDF использует ту же самую геометрию, что и PostScript. Она начинается с
8 нижнего левого угла страницы и по умолчанию измеряется в пойнтах (1/72 дюйма).
10 PDF uses the same geometry as PostScript. It starts from bottom-left corner of page
11 and by default is measured in points (1/72 of an inch).
15 Размер страницы может быть получен из объекта страницы:
17 Page size can be retrieved from a page object:
20 <programlisting language="php"><![CDATA[<?php
21 $width = $pdfPage->getWidth();
22 $height = $pdfPage->getHeight();]]>
26 <sect2 id="zend.pdf.drawing.color">
27 <title>Цвета<!-- Colors. --></title>
29 PDF имеет мощные возможности для представления цветов. Модуль Zend_Pdf
30 поддерживает шкалу серого цвета, цветовые пространства RGB и CMYK.
31 Они могут использоваться в любом месте, где требуется объект
32 <code>Zend_Pdf_Color</code>. Классы <code>Zend_Pdf_Color_GrayScale</code>,
33 <code>Zend_Pdf_Color_RGB</code> и <code>Zend_Pdf_Color_CMYK</code>
34 предоставляют этот функционал:
36 PDF has a powerful capabilities for colors representation. Zend_Pdf module supports Gray Scale,
37 RGB and CMYK color spaces. Any of them can be used in any place, where <code>Zend_Pdf_Color</code>
38 object is required. <code>Zend_Pdf_Color_GrayScale</code>, <code>Zend_Pdf_Color_RGB</code> and
39 <code>Zend_Pdf_Color_CMYK</code> classes provide this functionality:
42 <programlisting language="php"><![CDATA[<?php
43 // $grayLevel (число с плавающей точкой)
44 // 0.0 (черный) - 1.0 (белый)
45 $color1 = new Zend_Pdf_Color_GrayScale($grayLevel);
47 // $r, $g, $b (числа с плавающей точкой)
48 // 0.0 (минимальная интенсивность) - 1.0 (максимальная интенсивность)
49 $color2 = new Zend_Pdf_Color_RGB($r, $g, $b);
51 // $c, $m, $y, $k (числа с плавающей точкой)
52 // 0.0 (минимальная интенсивность) - 1.0 (максимальная интенсивность)
53 $color3 = new Zend_Pdf_Color_CMYK($c, $m, $y, $k);]]>
58 <sect2 id="zend.pdf.drawing.shape-drawing">
59 <title>Рисование фигур<!-- Shape Drawing. --></title>
61 Все операции прорисовки могут быть выполнены в контексте страницы PDF.
63 All drawing operations can be done in a context of PDF page.
67 Класс <code>Zend_Pdf_Page</code> предоставляет набор примитивов для рисования:
69 <code>Zend_Pdf_Page</code> class provides a set of drawing primitives:
72 <programlisting language="php"><![CDATA[<?php
74 * Рисует линию от x1,y1 до x2,y2.
81 public function drawLine($x1, $y1, $x2, $y2);]]>
83 <programlisting language="php"><![CDATA[<?php
85 * Рисует прямоугольник.
88 * Zend_Pdf_Const::SHAPEDRAW_FILLNSTROKE - заполнить прямоугольник и заштриховать (значение по умолчанию)
89 * Zend_Pdf_Const::SHAPEDRAW_STROKE - заштриховать прямоугольник
90 * Zend_Pdf_Const::SHAPEDRAW_FILL - заполнить прямоугольник
96 * @param integer $fillType
98 public function drawRectangle($x1, $y1, $x2, $y2, $fillType = Zend_Pdf_Const::SHAPEDRAW_FILLNSTROKE);]]>
100 <programlisting language="php"><![CDATA[<?php
102 * Риcует многоугольник.
104 * Если $fillType (тип заполнения) равен Zend_Pdf_Const::SHAPEDRAW_FILLNSTROKE
105 * или Zend_Pdf_Const::SHAPEDRAW_FILL, то многоугольник будет автоматически замкнут.
106 * См. более подробное описание этих методов в документации PDF
107 * (section 4.4.2 Path painting Operators, Filling)
109 * @param array $x - массив чисел с плавающей точкой (X-координаты вершин)
110 * @param array $y - массив чисел с плавающей точкой (Y-координаты вершин)
111 * @param integer $fillType
112 * @param integer $fillMethod
114 public function drawPolygon($x, $y,
115 $fillType = Zend_Pdf_Const::SHAPEDRAW_FILLNSTROKE,
116 $fillMethod = Zend_Pdf_Const::FILLMETHOD_NONZEROWINDING);]]>
118 <programlisting language="php"><![CDATA[<?php
120 * Рисует окружность, центр которой находится в точке с координатами x и y,
123 * Углы задаются в радианах.
126 * drawCircle($x, $y, $radius);
127 * drawCircle($x, $y, $radius, $fillType);
128 * drawCircle($x, $y, $radius, $startAngle, $endAngle);
129 * drawCircle($x, $y, $radius, $startAngle, $endAngle, $fillType);
132 * Это не настоящая окружность, так как PDF поддерживает только кубические кривые Безье.
133 * Но в очень хорошем приближении.
134 * Она отличается от реальной окружности максимум на 0.00026 доли радиуса
135 * (на углах PI/8, 3*PI/8, 5*PI/8, 7*PI/8, 9*PI/8, 11*PI/8, 13*PI/8 и 15*PI/8).
136 * На углах 0, PI/4, PI/2, 3*PI/4, PI, 5*PI/4, 3*PI/2 и 7*PI/4 это точная касательная к окружности.
140 * @param float $radius
141 * @param mixed $param4
142 * @param mixed $param5
143 * @param mixed $param6
145 public function drawCircle($x, $y, $radius, $param4 = null, $param5 = null, $param6 = null);]]>
147 <programlisting language="php"><![CDATA[<?php
149 * Рисует эллипс внутри заданного прямоугольника.
152 * drawEllipse($x1, $y1, $x2, $y2);
153 * drawEllipse($x1, $y1, $x2, $y2, $fillType);
154 * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle);
155 * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle, $fillType);
157 * Углы задаются в радианах.
163 * @param mixed $param5
164 * @param mixed $param6
165 * @param mixed $param7
167 public function drawEllipse($x1, $y1, $x2, $y2, $param5 = null, $param6 = null, $param7 = null);]]>
171 <sect2 id="zend.pdf.drawing.text-drawing">
172 <title>Написание текста<!-- Text Drawing.--></title>
174 Операции по написанию текста также существуют в контексте страницы PDF.
176 Text drawing operations are also exist in a context of PDF page:
179 <programlisting language="php"><![CDATA[<?php
181 * Выводит строку текста в заданной позиции.
183 * @param string $text
186 * @throws Zend_Pdf_Exception
188 public function drawText($text, $x, $y );]]>
191 Для написания текста используются текущий шрифт и его текущий размер. См.
192 подробное описание ниже.
194 Current font and current font size are used for text drawing operations. See detailed description below.
199 <sect2 id="zend.pdf.drawing.using-fonts">
200 <title>Применение шрифтов<!-- Using fonts. --></title>
202 Метод <code>Zend_Pdf_Page::drawText()</code> использует текущий шрифт,
203 который может быть установлен методом <code>Zend_Pdf_Page::setFont()</code>:
205 <code>Zend_Pdf_Page::drawText()</code> method uses current font, which can be assigned
206 by <code>Zend_Pdf_Page::setFont()</code> method:
209 <programlisting language="php"><![CDATA[<?php
211 * Устанавливает текущий шрифт.
213 * @param Zend_Pdf_Font $font
214 * @param float $fontSize
216 public function setFont(Zend_Pdf_Font $font, $fontSize);]]>
219 PDF поддерживает Type1, TrueType, Type3 и составные шрифты. Он предоставляет еще
220 14 стандартных шрифтов Type1. На данный момент модуль <code>Zend_Pdf</code>
221 предусматривает только эти стандартные шрифты. Они могут быть получены
222 с помощью класса <code>Zend_Pdf_Font_Standard</code>. Конкретный шрифт
223 указывается в качестве аргумента конструктора.
225 PDF supports Type1, TrueType, Type3 and composite fonts. There are also 14 standard Type1 fonts
226 provided by PDF. Zend_Pdf module provides only these standard fonts now. They can be obtained by using
227 <code>Zend_Pdf_Font_Standard</code> class. Concrete font is specified as a constructor argument:
231 <title>Создание стандартного шрифта<!-- Create standard font.--></title>
232 <programlisting language="php"><![CDATA[<?php
234 // Создание нового шрифта
235 $font = new Zend_Pdf_Font_Standard(Zend_Pdf_Const::FONT_HELVETICA);
238 $pdfPage->setFont($font, 36);
244 Константы для 14 стандартных шрифтов определены с помощью
245 класса <code>Zend_Pdf_Const</code>:
247 Font constants for 14 standard fonts are defined within <code>Zend_Pdf_Const</code> class:
251 <para>Zend_Pdf_Const::FONT_TIMES_ROMAN</para>
254 <para>Zend_Pdf_Const::FONT_TIMES_BOLD</para>
257 <para>Zend_Pdf_Const::FONT_TIMES_ITALIC</para>
260 <para>Zend_Pdf_Const::FONT_TIMES_BOLDITALIC</para>
263 <para>Zend_Pdf_Const::FONT_HELVETICA</para>
266 <para>Zend_Pdf_Const::FONT_HELVETICA_BOLD</para>
269 <para>Zend_Pdf_Const::FONT_HELVETICA_ITALIC</para>
272 <para>Zend_Pdf_Const::FONT_HELVETICA_BOLDITALIC</para>
275 <para>Zend_Pdf_Const::FONT_COURIER</para>
278 <para>Zend_Pdf_Const::FONT_COURIER_BOLD</para>
281 <para>Zend_Pdf_Const::FONT_COURIER_ITALIC</para>
284 <para>Zend_Pdf_Const::FONT_COURIER_BOLDITALIC</para>
287 <para>Zend_Pdf_Const::FONT_SYMBOL</para>
290 <para>Zend_Pdf_Const::FONT_ZAPFDINGBATS</para>
296 <sect2 id="zend.pdf.drawing.image-drawing">
297 <title>Рисование изображений<!-- Image Drawing. --></title>
299 Класс предоставляет метод <code>drawImage()</code> для рисования изображений.
301 <code>Zend_Pdf_Page</code> class provides drawImage() method to draw image:
304 <programlisting language="php"><![CDATA[<?php
306 * Рисует изображение в заданной позиции на странице.
308 * @param Zend_Pdf_Resource_Image $image
314 public function drawImage(Zend_Pdf_Resource_Image $image, $x1, $y1, $x2, $y2);]]>
317 Объекты изображений должны создаваться через метод
318 <code>Zend_Pdf_Image::imageWithPath($filePath)</code>
319 (сейчас поддерживаются изображения JPG, PNG и TIFF):
321 Image objects should be created with <code>Zend_Pdf_Image::imageWithPath($filePath)</code> method
322 (JPG, PNG and TIFF images are supported now):
326 <title>Рисование изображения<!-- Image drawing.--></title>
327 <programlisting language="php"><![CDATA[<?php
329 // Загрузка изображения
330 $image = Zend_Pdf_Image::imageWithPath('my_image.jpg');
332 $pdfPage->drawImage($image, 100, 100, 400, 300);
339 <emphasis>Важно! Для поддержки JPEG необходимо сконфигурировать
340 расширение GD.</emphasis>
341 <emphasis>Важно! Для поддержки PNG необходимо сконфигурировать
342 расширение ZLIB для работы с изображениями с Альфа-каналом.</emphasis>
344 <emphasis>Important! JPEG support requires PHP GD extension to be configured.</emphasis>
345 <emphasis>Important! PNG support requires ZLIB extension to be configured to work with Alpha channel images.</emphasis>
349 См. документацию PHP за более подробной информацией
350 (<ulink url="http://www.php.net/manual/en/ref.image.php">http://www.php.net/manual/en/ref.image.php</ulink>).
351 (<ulink url="http://www.php.net/manual/en/ref.zlib.php">http://www.php.net/manual/en/ref.zlib.php</ulink>).
353 Refer to the PHP documentation for detailed information
354 (<ulink url="http://www.php.net/manual/en/ref.image.php">http://www.php.net/manual/en/ref.image.php</ulink>).
355 (<ulink url="http://www.php.net/manual/en/ref.zlib.php">http://www.php.net/manual/en/ref.zlib.php</ulink>).
360 <sect2 id="zend.pdf.drawing.line-drawing-style">
361 <title>Стили рисования линий<!-- Line drawing style.--></title>
363 Стили рисования линий определяются толщиной линии, цветом линии и шаблоном
364 пунктира. Все эти параметры могут быть определены методами класса
365 <code>Zend_Pdf_Page</code>.
367 Line drawing style is defined by line width, line color and line dashing pattern.
368 All of this parameters can be assigned by <code>Zend_Pdf_Page</code>
372 <programlisting language="php"><![CDATA[<?php
373 /** Установка цвета линии. */
374 public function setLineColor(Zend_Pdf_Color $color);
376 /** Установка толщины линии. */
377 public function setLineWidth(float $width);
380 * Установка шаблона пунктира.
382 * $pattern (шаблон) является массивом чисел с плавающей точкой:
383 * array(on_length, off_length, on_length, off_length, ...)
384 * $phase (фаза) является сдвигом от начала линии.
386 * @param array $pattern
387 * @param array $phase
389 public function setLineDashingPattern($pattern, $phase = 0);]]>
393 <sect2 id="zend.pdf.drawing.fill-style">
394 <title>Стиль заполнения<!-- Fill style.--></title>
396 Методы <code>Zend_Pdf_Page::drawRectangle()</code>, <code>Zend_Pdf_Page::drawPoligon()</code>,
397 <code>Zend_Pdf_Page::drawCircle()</code> и <code>Zend_Pdf_Page::drawEllipse()</code>
398 принимают аргумент <varname>$fillType</varname> как необязательный параметр.
401 <code>Zend_Pdf_Page::drawRectangle()</code>, <code>Zend_Pdf_Page::drawPoligon()</code>,
402 <code>Zend_Pdf_Page::drawCircle()</code> and <code>Zend_Pdf_Page::drawEllipse()</code> methods take
403 <varname>$fillType</varname> argument as an optional parameter. It can be:
410 Zend_Pdf_Const::SHAPEDRAW_STROKE - штрихует фигуру <!-- stroke shape -->
415 Zend_Pdf_Const::SHAPEDRAW_FILL - заполняет фигуру <!-- only fill shape-->
420 Zend_Pdf_Const::SHAPEDRAW_FILLNSTROKE - заполняет и штрихует (поведение по умолчанию)
421 <!-- fill and stroke (default behavior)-->
427 Метод <code>Zend_Pdf_Page::drawPoligon()</code> принимает дополнительный
428 параметр <varname>$fillMethod</varname>:
430 <code>Zend_Pdf_Page::drawPoligon()</code> methods also takes an additional parameter
431 <varname>$fillMethod</varname>:
437 Zend_Pdf_Const::FILLMETHOD_NONZEROWINDING (поведение по умолчанию)
438 <!-- (default behavior)-->
441 <citetitle>Справка по PDF</citetitle> описывает это правило
445 Правило ненулевого количества витков определяет, находится ли
446 данная точка внутри траектории путем мысленного
447 проведения луча из этой точки в бесконечность в любом направлении
448 и последующего определения мест, где участок траектории пересекает луч.
449 Начиная отсчет с нуля, правило добавляет 1 каждый раз, когда
450 участок траектории пересекает луч слева направо и отнимает 1
451 каждый раз, когда участок траектории пересекает участок справа налево.
452 Если после подсчета всех пересечений результатом будет 0, то точка
453 находится вне траектории, иначе — внутри траектории.
455 Примечание: Метод не указывает, что делать, если участок траектории
456 совпадает или является касательной к выбранному лучу. Поскольку
457 направление луча является произвольным, правило просто выбирает
458 луч, который не создает таких пересечений. Для простых выпуклых
459 траекторий правило ненулевого количества витков определяет
460 внутреннюю и внешнюю части так, как это интуитивно предполагается.
461 Более интересными случаями являются те, которые включают в себя
462 сложные или самопересекающиеся траектории, как, например,
463 на Рис. 4.10 (в справке по PDF).
465 Для траектории, представляющую собой пятиконечную звезду,
466 состоящую из пяти соединенных отрезков, правило считает внутренней
467 частью всю площадь, окруженную звездой, включая пятиугольник в
468 центре. Для траектории, состоящей из двух концентрических
469 окружностей, площадь, окруженная обеими окружностями,
470 считается внутренней в том случае, если обе окружности нарисованы
471 в одном и том же направлении. Если окружности нарисованы в противоположных
472 направлениях, то, согласно правилу, только фигура в виде
473 баранки между ними будет внутренней частью, "дырка"
474 будет внешней частью.
478 <citetitle>PDF reference</citetitle> describes this rule as follows:
480 The nonzero winding number rule determines whether a given point is inside a
481 path by conceptually drawing a ray from that point to infinity in any direction
482 and then examining the places where a segment of the path crosses the ray. Starting
483 with a count of 0, the rule adds 1 each time a path segment crosses the ray
484 from left to right and subtracts 1 each time a segment crosses from right to left.
485 After counting all the crossings, if the result is 0 then the point is outside the path;
486 otherwise it is inside.
488 Note: The method just described does not specify what to do if a path segment coincides
489 with or is tangent to the chosen ray. Since the direction of the ray is arbitrary,
490 the rule simply chooses a ray that does not encounter such problem intersections.
491 For simple convex paths, the nonzero winding number rule defines the inside
492 and outside as one would intuitively expect. The more interesting cases are those
493 involving complex or self-intersecting paths like the ones shown in Figure 4.10
494 (in a PDF Reference).
496 For a path consisting of a five-pointed star, drawn with five connected straight
497 line segments intersecting each other, the rule considers the inside to be the entire
498 area enclosed by the star, including the pentagon in the center. For a path composed
499 of two concentric circles, the areas enclosed by both circles are considered
500 to be inside, provided that both are drawn in the same direction. If the circles are
501 drawn in opposite directions, only the "doughnut" shape between them is inside,
502 according to the rule; the "doughnut hole" is outside.
508 <para>Zend_Pdf_Const::FILLMETHOD_EVENODD</para>
510 <citetitle>Справка по PDF</citetitle> описывает это правило
514 Альтернативой правилу ненулевого количества витков является правило
515 чета-нечета. Это правило определяет нахождение точки
516 проведением луча из этой точки в любом направлении и простым подсчетом
517 количества пересечений частей траектории с этим лучом, независимо от
518 направления пересечения. Если число нечетное, то точка находится
519 во внутренней части; если четное, то точка находится снаружи. Это
520 правило дает такой же результат, как и правило ненулевого
521 количества витков для траекторий с простыми фигурами, но дает
522 разные результаты в случае более сложных фигур.
524 Рис. 4.11 (в справке по PDF) показывает результаты применения
525 правила чета-нечета к сложным фигурам. В случае пятиконечной
526 звезды правило считает точки треугольников находящимися
527 внутри траектории, но не пятиугольник в центре. Для двух
528 концентрических окружностей только фигура в виде баранки будет
529 считаться внутренней частью, независимо от направлений, в которых
530 нарисованы окружности.
534 <citetitle>PDF reference</citetitle> describes this rule as follows:
536 An alternative to the nonzero winding number rule is the even-odd rule. This rule
537 determines the "insideness" of a point by drawing a ray from that point in any
538 direction and simply counting the number of path segments that cross the ray,
539 regardless of direction. If this number is odd, the point is inside; if even, the point
540 is outside. This yields the same results as the nonzero winding number rule for
541 paths with simple shapes, but produces different results for more complex
544 Figure 4.11 (in a PDF Reference) shows the effects of applying the even-odd rule
545 to complex paths. For the five-pointed star, the rule considers the triangular
546 points to be inside the path, but not the pentagon in the center. For the two
547 concentric circles, only the "doughnut" shape between the two circles is considered inside,
548 regardless of the directions in which the circles are drawn.
556 <sect2 id="zend.pdf.drawing.rotations">
557 <title>Поворот<!-- Rotations. --></title>
559 Страница PDF может быть повернута перед применением любых операций рисования.
560 Это может быть сделано методом <code>Zend_Pdf_Page::rotate()</code>:
562 PDF page can be rotated before applying any draw operation.
563 It can be done by <code>Zend_Pdf_Page::rotate()</code> method:
566 <programlisting language="php"><![CDATA[<?php
568 * Поворачивает страницу вокруг точки ($x, $y) на заданный угол (в радианах).
570 * @param float $angle
572 public function rotate($x, $y, $angle);]]>
576 <sect2 id="zend.pdf.drawing.save-restore">
577 <title>Сохранение/восстановление графического состояния<!-- Save/restore graphics state.--></title>
579 В любое время графическое состояние страницы (текущий шрифт, размер шрифта,
580 цвет линии, цвет заполнения, стиль линии, поворот страницы, область ограничения) может
581 быть сохранено и после восстановлено. Операция сохранения сохраняет данные
582 в стек графического состояния, операция восстановления извлекает данные из стека.
584 At any time page graphics state (current font, font size, line color, fill color,
585 line style, page rotation, clip area) can be saved and then restored. Save operation puts
586 data to a graphics state stack, restore operation retrieves it from there.
590 Методы в классе <code>Zend_Pdf_Page</code> для этих операций:
592 There are to methods in <code>Zend_Pdf_Page</code> class for these operations:
595 <programlisting language="php"><![CDATA[<?php
597 * Сохраняет графическое состояние данной страницы.
598 * Выполняет снимок используемых на данный момент стилей, положений, ... и всех
599 * поворотов/преобразований/масштабирований которые были применены.
600 * This takes a snapshot of the currently applied style, position, clipping area and
601 * any rotation/translation/scaling that has been applied.
603 public function saveGS();
606 * Восстанавливает графическое состояние, которое было сохранено последним
609 public function restoreGS();]]>
613 <sect2 id="zend.pdf.drawing.clipping">
614 <title>Ограничение области рисования<!-- Clipping draw area. --></title>
616 PDF и модуль Zend_Pdf поддерживают ограничение области рисования.
617 Ограничение определяет область страницы, затрагиваемой
618 операциями рисования. Вначале эта область представляет собой всю
621 PDF and Zend_Pdf module support clipping of draw area.
622 Current clip area limits the regions of the page affected by painting operators. It's a whole page initially.
626 Класс <code>Zend_Pdf_Page</code> предоставляет набор методов для операций ограничения.
628 <code>Zend_Pdf_Page</code> class provides a set of methods for clipping operations.
631 <programlisting language="php"><![CDATA[<?php
633 * Делит текущую площадь ограничения с помощью прямоугольника.
640 public function clipRectangle($x1, $y1, $x2, $y2);]]>
642 <programlisting language="php"><![CDATA[<?php
644 * Делит текущую площадь ограничения с помощью многоугольника.
646 * @param array $x - массив чисел с плавающей точкой (X-координаты верхушек)
647 * @param array $y - массив чисел с плавающей точкой (Y-координаты верхушек)
648 * @param integer $fillMethod
650 public function clipPolygon($x, $y, $fillMethod = Zend_Pdf_Const::FILLMETHOD_NONZEROWINDING);]]>
652 <programlisting language="php"><![CDATA[<?php
654 * Делит текущую площадь ограничения с помощью окружности.
658 * @param float $radius
659 * @param float $startAngle
660 * @param float $endAngle
662 public function clipCircle($x, $y, $radius, $startAngle = null, $endAngle = null);]]>
664 <programlisting language="php"><![CDATA[<?php
666 * Делит текущую площадь ограничения с помощью эллипса.
669 * drawEllipse($x1, $y1, $x2, $y2);
670 * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle);
672 * @todo обрабатывать случаи, когда $x2-$x1 == 0 или $y2-$y1 == 0
678 * @param float $startAngle
679 * @param float $endAngle
681 public function clipEllipse($x1, $y1, $x2, $y2, $startAngle = null, $endAngle = null);]]>
685 <sect2 id="zend.pdf.drawing.styles">
686 <title>Стили<!-- Styles. --></title>
688 Класс <code>Zend_Pdf_Style</code> предоставляет набор функциональных
689 возможностей для работы со стилями.
691 <code>Zend_Pdf_Style</code> class provides styles functionality.
695 Стили могут использоваться для сохранения набора параметров графического
696 состояния и применять их к странице PDF одной операцией:
698 Styles can be used to store a set of graphic state parameters and apply it to a PDF page by one operation:
701 <programlisting language="php"><![CDATA[<?php
703 * Установить стиль для будущих операций рисования на данной странице
705 * @param Zend_Pdf_Style $style
707 public function setStyle(Zend_Pdf_Style $style);
710 * Возвращает стили, используемые на странице
712 * @return Zend_Pdf_Style|null
714 public function getStyle();]]>
718 Класс <code>Zend_Pdf_Style</code> предоставляет набор методов для установки
719 или получения различных параметров графического состояния:
721 <code>Zend_Pdf_Style</code> class provides a set of methods to set or get different graphics state parameters:
724 <programlisting language="php"><![CDATA[<?php
726 * Устанавливает цвет линии.
728 * @param Zend_Pdf_Color $color
730 public function setLineColor(Zend_Pdf_Color $color);]]>
732 <programlisting language="php"><![CDATA[<?php
734 * Возвращает цвет линии.
736 * @return Zend_Pdf_Color|null
738 public function getLineColor();]]>
740 <programlisting language="php"><![CDATA[<?php
742 * Устанавливает толщину линии.
744 * @param float $width
746 public function setLineWidth($width);]]>
748 <programlisting language="php"><![CDATA[<?php
750 * Возвращает толщину линии.
754 public function getLineWidth();]]>
756 <programlisting language="php"><![CDATA[<?php
758 * Устанавливает шаблон пунктира.
760 * @param array $pattern
761 * @param float $phase
763 public function setLineDashingPattern($pattern, $phase = 0);]]>
765 <programlisting language="php"><![CDATA[<?php
767 * Возвращает шаблон пунктира.
771 public function getLineDashingPattern();]]>
773 <programlisting language="php"><![CDATA[<?php
775 * Возвращает фазу пунктира.
779 public function getLineDashingPhase();]]>
781 <programlisting language="php"><![CDATA[<?php
783 * Устанавливает цвет заполнения.
785 * @param Zend_Pdf_Color $color
787 public function setFillColor(Zend_Pdf_Color $color);]]>
789 <programlisting language="php"><![CDATA[<?php
791 * Возвращает цвет заполнения.
793 * @return Zend_Pdf_Color|null
795 public function getFillColor();]]>
797 <programlisting language="php"><![CDATA[<?php
799 * Устанавливает текущий шрифт.
801 * @param Zend_Pdf_Font $font
802 * @param float $fontSize
804 public function setFont(Zend_Pdf_Font $font, $fontSize);]]>
806 <programlisting language="php"><![CDATA[<?php
808 * Изменяет текущий размер шрифта
810 * @param float $fontSize
812 public function setFontSize($fontSize);]]>
814 <programlisting language="php"><![CDATA[<?php
816 * Возвращает текущий шрифт.
818 * @return Zend_Pdf_Font $font
820 public function getFont();]]>
822 <programlisting language="php"><![CDATA[<?php
824 * Возвращает текущий размер шрифта.
826 * @return float $fontSize
828 public function getFontSize();]]>