Zend_Pdf-Drawing.xml 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24604 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.pdf.drawing">
  5. <title>Dessiner</title>
  6. <sect2 id="zend.pdf.drawing.geometry">
  7. <title>Géométrie</title>
  8. <para>
  9. Le format <acronym>PDF</acronym> utilise la même géométrie que le format PostScript. Elle démarre
  10. d'en bas à gauche et est mesuré en points (1/72 inch soit 0,352778 mm).
  11. </para>
  12. <para>La taille d'une page peut-être récupéré depuis un objet page :</para>
  13. <para>
  14. <programlisting language="php"><![CDATA[
  15. $width = $pdfPage->getWidth();
  16. $height = $pdfPage->getHeight();
  17. ]]></programlisting></para>
  18. </sect2>
  19. <sect2 id="zend.pdf.drawing.color">
  20. <title>Couleurs</title>
  21. <para>
  22. Le format <acronym>PDF</acronym> a d'excellentes capacités dans la représentation des couleurs. Le
  23. module <classname>Zend_Pdf</classname> supporte les espaces de couleur : niveaux de
  24. gris, RGB et CMJN. Chacun d'entre eux peut-être utilisé à chaque fois qu'un objet
  25. <classname>Zend_Pdf_Color</classname> est requis. Les classes
  26. <classname>Zend_Pdf_Color_GrayScale</classname>,
  27. <classname>Zend_Pdf_Color_RGB</classname> et <classname>Zend_Pdf_Color_CMYK</classname>
  28. fournissent cette fonctionnalité :
  29. </para>
  30. <programlisting language="php"><![CDATA[
  31. // $grayLevel (float). 0.0 (noir) - 1.0 (blanc)
  32. $color1 = new Zend_Pdf_Color_GrayScale($grayLevel);
  33. // $r, $g, $b (float).
  34. // 0.0 (intensité mimimum) - 1.0 (intensité maximum)
  35. $color2 = new Zend_Pdf_Color_RGB($r, $g, $b);
  36. // $c, $m, $y, $k (float).
  37. // 0.0 (intensité mimimum) - 1.0 (intensité maximum)
  38. $color3 = new Zend_Pdf_Color_CMYK($c, $m, $y, $k);
  39. ]]></programlisting>
  40. <para>
  41. Les différentes couleurs HTML sont aussi fourni avec la classe
  42. <classname>Zend_Pdf_Color_Html</classname> :
  43. </para>
  44. <programlisting language="php"><![CDATA[
  45. $color1 = new Zend_Pdf_Color_Html('#3366FF');
  46. $color2 = new Zend_Pdf_Color_Html('silver');
  47. $color3 = new Zend_Pdf_Color_Html('forestgreen');
  48. ]]></programlisting>
  49. </sect2>
  50. <sect2 id="zend.pdf.drawing.shape-drawing">
  51. <title>Dessiner des formes</title>
  52. <para>
  53. Toutes les opérations de dessins peuvent être réalisées dans le contexte d'une
  54. page <acronym>PDF</acronym>.
  55. </para>
  56. <para>
  57. La classe <classname>Zend_Pdf_Page</classname> fournit les outils de dessins
  58. :
  59. </para>
  60. <para>
  61. <programlisting language="php"><![CDATA[
  62. /**
  63. * Dessine une ligne de x1,y1 à x2,y2.
  64. *
  65. * @param float $x1
  66. * @param float $y1
  67. * @param float $x2
  68. * @param float $y2
  69. * @return Zend_Pdf_Page
  70. */
  71. public function drawLine($x1, $y1, $x2, $y2);
  72. ]]></programlisting></para>
  73. <programlisting language="php"><![CDATA[
  74. /**
  75. * Draw a rounded rectangle.
  76. *
  77. * Fill types:
  78. * Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - fill rectangle
  79. and stroke (default)
  80. * Zend_Pdf_Page::SHAPE_DRAW_STROKE - stroke rectangle
  81. * Zend_Pdf_Page::SHAPE_DRAW_FILL - fill rectangle
  82. *
  83. * radius is an integer representing radius of the four corners, or an array
  84. * of four integers representing the radius starting at top left, going
  85. * clockwise
  86. *
  87. * @param float $x1
  88. * @param float $y1
  89. * @param float $x2
  90. * @param float $y2
  91. * @param integer|array $radius
  92. * @param integer $fillType
  93. * @return Zend_Pdf_Page
  94. */
  95. public function drawRoundedRectangle($x1, $y1, $x2, $y2, $radius,
  96. $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE);
  97. ]]></programlisting>
  98. <para>
  99. <programlisting language="php"><![CDATA[
  100. /**
  101. * Dessine un rectangle.
  102. *
  103. * Type de remplissage:
  104. * Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE
  105. * - remplit le rectangle et dessine le contour (par défaut)
  106. * Zend_Pdf_Page::SHAPE_DRAW_STROKE
  107. * - trace uniquement le contour du rectangle
  108. * Zend_Pdf_Page::SHAPE_DRAW_FILL
  109. * - remplit le rectangle
  110. *
  111. * @param float $x1
  112. * @param float $y1
  113. * @param float $x2
  114. * @param float $y2
  115. * @return Zend_Pdf_Page
  116. * @param integer $fillType
  117. * @return Zend_Pdf_Page
  118. */
  119. public function drawRectangle(
  120. $x1, $y1, $x2, $y2, $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE);
  121. ]]></programlisting></para>
  122. <para>
  123. <programlisting language="php"><![CDATA[
  124. /**
  125. * Dessine un polygone.
  126. *
  127. * Si $fillType est Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE
  128. * ou Zend_Pdf_Page::SHAPE_DRAW_FILL,
  129. * le polygone est automatiquement fermé.
  130. * Regardez la description détaillée de ces méthodes dans la
  131. * documentation du format PDF
  132. * (section 4.4.2 Path painting Operators, Filling)
  133. *
  134. * @param array $x - tableau de float (les coordonnés X des sommets)
  135. * @param array $y - tableau de float (les coordonnés Y des sommets)
  136. * @param integer $fillType
  137. * @param integer $fillMethod
  138. * @return Zend_Pdf_Page
  139. */
  140. public function drawPolygon(
  141. $x, $y,
  142. $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE,
  143. $fillMethod = Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING);
  144. ]]></programlisting></para>
  145. <para>
  146. <programlisting language="php"><![CDATA[
  147. /**
  148. * Dessine un cercle avec comme centre x, y et comme rayon radius.
  149. *
  150. * Les angles sont en radian
  151. *
  152. * Signatures des méthodes:
  153. * drawCircle($x, $y, $radius);
  154. * drawCircle($x, $y, $radius, $fillType);
  155. * drawCircle($x, $y, $radius, $startAngle, $endAngle);
  156. * drawCircle($x, $y, $radius, $startAngle, $endAngle, $fillType);
  157. *
  158. *
  159. * Ce n'est pas réellement un cercle, car le format supporte
  160. * uniquement des courbe de Bezier cubique.
  161. * Mais c'est une très bonne approximation.
  162. * La différence avec un vrai cercle est de au maximum 0.00026 radians
  163. * (avec les angles PI/8, 3*PI/8, 5*PI/8, 7*PI/8, 9*PI/8, 11*PI/8,
  164. * 13*PI/8 et 15*PI/8).
  165. * Avec les angles 0, PI/4, PI/2, 3*PI/4, PI, 5*PI/4, 3*PI/2 et 7*PI/4
  166. * c'est exactement la tangente d'un cercle.
  167. *
  168. * @param float $x
  169. * @param float $y
  170. * @param float $radius
  171. * @param mixed $param4
  172. * @param mixed $param5
  173. * @param mixed $param6
  174. * @return Zend_Pdf_Page
  175. */
  176. public function drawCircle(
  177. $x, $y, $radius, $param4 = null, $param5 = null, $param6 = null);
  178. ]]></programlisting></para>
  179. <para>
  180. <programlisting language="php"><![CDATA[
  181. /**
  182. * Dessine une ellipse dans le rectangle spécifié.
  183. *
  184. * Signatures des méthodes:
  185. * drawEllipse($x1, $y1, $x2, $y2);
  186. * drawEllipse($x1, $y1, $x2, $y2, $fillType);
  187. * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle);
  188. * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle, $fillType);
  189. *
  190. * Les angles sont en radians
  191. *
  192. * @param float $x1
  193. * @param float $y1
  194. * @param float $x2
  195. * @param float $y2
  196. * @param mixed $param5
  197. * @param mixed $param6
  198. * @param mixed $param7
  199. * @return Zend_Pdf_Page
  200. */
  201. public function drawEllipse(
  202. $x1, $y1, $x2, $y2, $param5 = null, $param6 = null, $param7 = null);
  203. ]]></programlisting></para>
  204. </sect2>
  205. <sect2 id="zend.pdf.drawing.text-drawing">
  206. <title>Dessiner du texte</title>
  207. <para>
  208. Les opérations de dessins existent bien sûr dans le contexte d'une page
  209. <acronym>PDF</acronym>. Vous pouvez dessiner une seule ligne de texte à n'importe quel
  210. endroit dans la page en fournissant les coordonnées x et y de la ligne de base. La
  211. police courant ainsi que sa taille et la couleur de remplissage seront utilisées pour
  212. le dessin (voir la description ci-dessous).
  213. </para>
  214. <para>
  215. <programlisting language="php"><![CDATA[
  216. /**
  217. * Dessine une ligne de texte à la position x,y.
  218. *
  219. * @param string $text
  220. * @param float $x
  221. * @param float $y
  222. * @param string $charEncoding (optionnel) encodage des caractères du texte.
  223. * Par défaut le réglage système est utilisé.
  224. * @throws Zend_Pdf_Exception
  225. * @return Zend_Pdf_Page
  226. */
  227. public function drawText($text, $x, $y, $charEncoding = '');
  228. ]]></programlisting></para>
  229. <example id="zend.pdf.drawing.text-drawing.example-1">
  230. <title>Dessiner une ligne dans la page</title>
  231. <programlisting language="php"><![CDATA[
  232. ...
  233. $pdfPage->drawText('Bonjour le monde!', 72, 720);
  234. ...
  235. ]]></programlisting>
  236. </example>
  237. <example id="zend.pdf.drawing.text-drawing.example-2">
  238. <title>Régler la couleur du texte</title>
  239. <programlisting language="php"><![CDATA[
  240. ...
  241. $pdfPage->setFillColor(Zend_Pdf_Color_Html::color('#990000'))
  242. ->drawText('Bonjour le monde (en rouge) !', 72, 720);
  243. ....
  244. ]]></programlisting>
  245. </example>
  246. <para>
  247. Par défaut, les chaînes de texte sont interprétées en utilisant l'encodage du
  248. système. Si vous avez une chaîne qui utilise un encodage différent (comme les chaînes
  249. UTF-8 lues depuis une fichier sur le disque, ou une chaîne MacRoman obtenue depuis une
  250. base de données), vous pouvez indiquer l'encodage au moment du dessin et Zend_Pdf gérera
  251. la conversion pour vous. Vous pouvez fournir des chaînes dans n'importe quel encodage
  252. supporté par la fonction <ulink
  253. url="http://www.php.net/manual/function.iconv.php">iconv()</ulink> de <acronym>PHP</acronym>:
  254. </para>
  255. <example id="zend.pdf.drawing.text-drawing.example-3">
  256. <title>Dessiner une chaîne UTF-8 sur une page</title>
  257. <programlisting language="php"><![CDATA[
  258. ...
  259. // Lit une chaîne UTF-8 à partir du disque
  260. $unicodeString = fread($fp, 1024);
  261. // Dessine une chaîne dans la page
  262. $pdfPage->drawText($unicodeString, 72, 720, 'UTF-8');
  263. ...
  264. ]]></programlisting>
  265. </example>
  266. </sect2>
  267. <sect2 id="zend.pdf.drawing.using-fonts">
  268. <title>Utiliser des polices de caractères</title>
  269. <para>
  270. <methodname>Zend_Pdf_Page::drawText()</methodname> utilise la police courante ainsi
  271. que sa taille, qui sont définies avec la méthode
  272. <methodname>Zend_Pdf_Page::setFont()</methodname> :
  273. </para>
  274. <para>
  275. <programlisting language="php"><![CDATA[
  276. /**
  277. * Choisit la police courante.
  278. *
  279. * @param Zend_Pdf_Resource_Font $font
  280. * @param float $fontSize
  281. * @return Zend_Pdf_Page
  282. */
  283. public function setFont(Zend_Pdf_Resource_Font $font, $fontSize);
  284. ]]></programlisting></para>
  285. <para>
  286. Les documents <acronym>PDF</acronym> supportent PostScript Type 1 et les polices TrueType, mais
  287. également deux types spécifiques <acronym>PDF</acronym>, Type3 et les polices composites. Il y a aussi 14
  288. polices Type 1 standard intégré dans tout lecteur de <acronym>PDF</acronym> : Courier (4 styles), Helvetica
  289. (4 styles), Times (4 styles), Symbol, et Zapf Dingbats.
  290. </para>
  291. <para>
  292. Zend_Pdf supporte actuellement les 14 polices standard mais également vos propres
  293. police TrueType. Les objets de police obtenus via une des deux fabriques méthodes :
  294. <methodname>Zend_Pdf_Font::fontWithName($fontName)</methodname> pour les 14 polices <acronym>PDF</acronym>
  295. standard ou <methodname>Zend_Pdf_Font::fontWithPath($filePath)</methodname> pour les
  296. polices personnalisées.
  297. </para>
  298. <example id="zend.pdf.drawing.using-fonts.example-1">
  299. <title>Créer une police standard</title>
  300. <programlisting language="php"><![CDATA[
  301. ...
  302. // Crée une nouvelle police
  303. $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
  304. // Applique la police
  305. $pdfPage->setFont($font, 36);
  306. ...
  307. ]]></programlisting>
  308. </example>
  309. <para>
  310. Les constantes pour les 14 polices standard sont définis dans la classe
  311. <classname>Zend_Pdf_Font</classname> : <itemizedlist>
  312. <listitem>
  313. <para>Zend_Pdf_Font::FONT_COURIER</para>
  314. </listitem>
  315. <listitem>
  316. <para>Zend_Pdf_Font::FONT_COURIER_BOLD</para>
  317. </listitem>
  318. <listitem>
  319. <para>Zend_Pdf_Font::FONT_COURIER_ITALIC</para>
  320. </listitem>
  321. <listitem>
  322. <para>Zend_Pdf_Font::FONT_COURIER_BOLD_ITALIC</para>
  323. </listitem>
  324. <listitem>
  325. <para>Zend_Pdf_Font::FONT_TIMES</para>
  326. </listitem>
  327. <listitem>
  328. <para>Zend_Pdf_Font::FONT_TIMES_BOLD</para>
  329. </listitem>
  330. <listitem>
  331. <para>Zend_Pdf_Font::FONT_TIMES_ITALIC</para>
  332. </listitem>
  333. <listitem>
  334. <para>Zend_Pdf_Font::FONT_TIMES_BOLD_ITALIC</para>
  335. </listitem>
  336. <listitem>
  337. <para>Zend_Pdf_Font::FONT_HELVETICA</para>
  338. </listitem>
  339. <listitem>
  340. <para>Zend_Pdf_Font::FONT_HELVETICA_BOLD</para>
  341. </listitem>
  342. <listitem>
  343. <para>Zend_Pdf_Font::FONT_HELVETICA_ITALIC</para>
  344. </listitem>
  345. <listitem>
  346. <para>Zend_Pdf_Font::FONT_HELVETICA_BOLD_ITALIC</para>
  347. </listitem>
  348. <listitem>
  349. <para>Zend_Pdf_Font::FONT_SYMBOL</para>
  350. </listitem>
  351. <listitem>
  352. <para>Zend_Pdf_Font::FONT_ZAPFDINGBATS</para>
  353. </listitem>
  354. </itemizedlist>
  355. </para>
  356. <para>
  357. Vous pouvez aussi prendre n'importe quelle police TrueType (extension habituelle
  358. ".ttf") ou OpenType (".otf") si elles ont une silhouette TrueType. Pour l'instant non
  359. supportée, les polices Mac Os X ".dfont" et les collections TrueType Microsoft (".ttc")
  360. seront intégrées dans une version future.
  361. </para>
  362. <para>
  363. Pour utiliser une police TrueType, vous devez fournir le chemin de fichier complet
  364. vers cette police. Si la police ne peut pas être lue pour une quelconque raison, ou si
  365. ce n'est pas une police TrueType, la méthode lèvera une exception :
  366. </para>
  367. <example id="zend.pdf.drawing.using-fonts.example-2">
  368. <title>Créer une police TrueType</title>
  369. <programlisting language="php"><![CDATA[
  370. ...
  371. // Crée la nouvelle police
  372. $goodDogCoolFont = Zend_Pdf_Font::fontWithPath('/chemin/vers/GOODDC__.TTF');
  373. // Applique cette police
  374. $pdfPage->setFont($goodDogCoolFont, 36);
  375. ...
  376. ]]></programlisting>
  377. </example>
  378. <para>
  379. Par défaut, les polices personnalisées seront incorporées dans le document <acronym>PDF</acronym>
  380. résultant. Cela permet aux destinataires de voir la page comme prévu, même s'ils ne font
  381. pas installer les polices appropriées sur leur système. En cas de problème avec la
  382. taille du fichier généré, vous pouvez demander que la police ne soit pas incorporé en
  383. passant l'option 'ne pas inclure' à la méthode de création :
  384. </para>
  385. <example id="zend.pdf.drawing.using-fonts.example-3">
  386. <title>Créer une police TrueType sans l'incorporer dans le document PDF</title>
  387. <programlisting language="php"><![CDATA[
  388. ...
  389. // Crée la nouvelle police
  390. $goodDogCoolFont =
  391. Zend_Pdf_Font::fontWithPath('/chemin/vers/GOODDC__.TTF',
  392. Zend_Pdf_Font::EMBED_DONT_EMBED);
  393. // Applique cette police
  394. $pdfPage->setFont($goodDogCoolFont, 36);
  395. ...
  396. ]]></programlisting>
  397. </example>
  398. <para>
  399. Si les polices ne sont pas incorporées mais que le destinataire du fichier <acronym>PDF</acronym> a
  400. ces polices installées sur son système, il verra le document comme prévu. Si la police
  401. correcte n'est pas installée, l'application de visualisation du <acronym>PDF</acronym> fera de son mieux
  402. pour synthétiser une police de remplacement.
  403. </para>
  404. <para>
  405. Quelques polices ont les règles de licence très spécifiques qui les empêchent
  406. d'être incorporées dans des documents <acronym>PDF</acronym>. Donc vous devez faire attention, si vous
  407. essayez d'utiliser une police qui ne peut pas être incorporée, la méthode de création
  408. lèvera une exception.
  409. </para>
  410. <para>
  411. Vous pouvez toujours utiliser ces polices, mais vous devez passer le paramètre 'ne
  412. pas inclure' comme décrit ci-dessous, ou vous pouvez simplement bloquer l'exception
  413. :
  414. </para>
  415. <example id="zend.pdf.drawing.using-fonts.example-4">
  416. <title>Ne pas lever d'exception pour les polices ne pouvant être incorporées</title>
  417. <programlisting language="php"><![CDATA[
  418. ...
  419. $font =
  420. Zend_Pdf_Font::fontWithPath('/chemin/vers/PoliceNonIncorporable.ttf',
  421. Zend_Pdf_Font::EMBED_SUPPRESS_EMBED_EXCEPTION);
  422. ...
  423. ]]></programlisting>
  424. </example>
  425. <para>
  426. Cette technique de suppression est préférée si vous permettez aux utilisateurs de
  427. choisir leurs propres polices. Les polices qui peuvent être incorporées dans le document
  428. <acronym>PDF</acronym> le seront ; les autres ne le seront pas.
  429. </para>
  430. <para>
  431. Les fichiers de police peuvent être assez grands, certains peuvent atteindre des
  432. dizaines de méga-octets. Par défaut, toutes les polices incorporées sont comprimées en
  433. utilisant le schéma de compression Flate, ayant pour résultat un gain d'espace de 50% en
  434. moyenne. Si, pour une quelconque raison, vous ne voulez pas comprimer la police, vous
  435. pouvez le neutraliser avec une option :
  436. </para>
  437. <example id="zend.pdf.drawing.using-fonts.example-5">
  438. <title>Ne pas compresser une police incorporée</title>
  439. <programlisting language="php"><![CDATA[
  440. ...
  441. $font =
  442. Zend_Pdf_Font::fontWithPath('/chemin/vers/PoliceDeGrandeTaille.ttf',
  443. Zend_Pdf_Font::EMBED_DONT_COMPRESS);
  444. ...
  445. ]]></programlisting>
  446. </example>
  447. <para>
  448. En conclusion, si nécessaire, vous pouvez combiner les options d'incorporation en
  449. employant l'opérateur binaire OR :
  450. </para>
  451. <example id="zend.pdf.drawing.using-fonts.example-6">
  452. <title>Combiner les options de polices incorporées</title>
  453. <programlisting language="php"><![CDATA[
  454. ...
  455. $font = Zend_Pdf_Font::fontWithPath(
  456. $cheminVersPoliceQuelconque,
  457. (Zend_Pdf_Font::EMBED_SUPPRESS_EMBED_EXCEPTION |
  458. Zend_Pdf_Font::EMBED_DONT_COMPRESS));
  459. ...
  460. ]]></programlisting>
  461. </example>
  462. </sect2>
  463. <sect2 id="zend.pdf.drawing.standard-fonts-limitations">
  464. <title>Limitations des polices standard PDF</title>
  465. <para>
  466. Les polices standard <acronym>PDF</acronym> emploient en interne plusieurs encodages sur un seul
  467. octet (voir <ulink
  468. url="http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference_1-7.pdf">PDF Reference,
  469. Sixth Edition, version 1.7</ulink> - Annexe D pour plus de détails). Elles sont
  470. généralement avec un jeu de caractère de type Latin1(excepté les polices Symbol and
  471. ZapfDingbats).
  472. </para>
  473. <para>
  474. <classname>Zend_Pdf</classname> utilise l'encodage CP1252 (WinLatin1) pour tracer
  475. les textes avec les polices standard.
  476. </para>
  477. <para>
  478. Le texte peut encore être fourni dans n'importe quel autre encodage, qui doit être
  479. spécifié s'il diffère de celui en cours. Seulement les caractères WinLatin1 seront
  480. tracés réellement.
  481. </para>
  482. <example id="zend.pdf.drawing.using-fonts.example-7">
  483. <title>Combiner les options de polices embarqués</title>
  484. <programlisting language="php"><![CDATA[
  485. ...
  486. $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_COURIER);
  487. $pdfPage->setFont($font, 36)
  488. ->drawText('Euro sign - €', 72, 720, 'UTF-8')
  489. ->drawText('Text with umlauts - à è ì', 72, 650, 'UTF-8');
  490. ...
  491. ]]></programlisting>
  492. </example>
  493. </sect2>
  494. <sect2 id="zend.pdf.drawing.extracting-fonts">
  495. <title>Extraction des polices</title>
  496. <para>
  497. Depuis la version 1.5, <classname>Zend_Pdf</classname> fournit la possibilité
  498. d'extraire les polices des documents chargés.
  499. </para>
  500. <para>
  501. Ceci peut être utile lors des mises à jour de document avec ajout de texte. Sans
  502. cette fonctionnalité vous devez attacher et probablement intégrer la police dans le
  503. document chaque fois que vous voulez le mettre à jour.
  504. </para>
  505. <para>
  506. Les objets <classname>Zend_Pdf</classname> et <classname>Zend_Pdf_Page</classname>
  507. fournissent une méthode spéciale pour extraire toutes les polices mentionnés à
  508. l'intérieur d'un document ou d'une page :
  509. </para>
  510. <example id="zend.pdf.drawing.extracting-fonts.example-1">
  511. <title>Extraction de polices à partir d'un document chargé</title>
  512. <programlisting language="php"><![CDATA[
  513. ...
  514. $pdf = Zend_Pdf::load($cheminVersDocument);
  515. ...
  516. // Récupère toutes les polices du document
  517. $listePolice = $pdf->extractFonts();
  518. $pdf->pages[] = ($page = $pdf->newPage(Zend_Pdf_Page::SIZE_A4));
  519. $yPosition = 700;
  520. foreach ($listePolice as $police) {
  521. $page->setFont($police, 15);
  522. $page->drawText(
  523. $police->getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT, 'fr', 'UTF-8')
  524. . ': Le renard brun rapide saute par-dessus le chien paresseux',
  525. 100,
  526. $yPosition,
  527. 'UTF-8');
  528. $yPosition -= 30;
  529. }
  530. ...
  531. // Récupère toutes les polices référencées dans la première page du document
  532. $firstPage = reset($pdf->pages);
  533. $firstPageFonts = $firstPage->extractFonts();
  534. ...
  535. ]]></programlisting>
  536. </example>
  537. <example id="zend.pdf.drawing.extracting-fonts.example-2">
  538. <title>Extraction d'une police à partir d'un document chargé en spécifiant le nom de
  539. police</title>
  540. <programlisting language="php"><![CDATA[
  541. ...
  542. $pdf = new Zend_Pdf();
  543. ...
  544. $pdf->pages[] = ($page = $pdf->newPage(Zend_Pdf_Page::SIZE_A4));
  545. $police = Zend_Pdf_Font::fontWithPath($cheminVersPolices);
  546. $page->setFont($police, $taillePolice);
  547. $page->drawText($texte, $x, $y);
  548. ...
  549. // Ce nom de police peut être stocké quelquepart...
  550. $fontName = $font->getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT, 'fr', 'UTF-8');
  551. ...
  552. $pdf->save($cheminVersDocument);
  553. ...
  554. ]]></programlisting>
  555. <programlisting language="php"><![CDATA[
  556. ...
  557. $pdf = Zend_Pdf::load($cheminVersDocument);
  558. ...
  559. $pdf->pages[] = ($page = $pdf->newPage(Zend_Pdf_Page::SIZE_A4));
  560. $police = $pdf->extractFont($nomPolice);
  561. /* $pageSource->extractFont($nomPolice) peut aussi être utilisé ici */
  562. $page->setFont($police, $taillePolice);
  563. $page->drawText($texte, $x, $y);
  564. ...
  565. $pdf->save($cheminVersDocument, true /* mise à jour de type incrémental */);
  566. ...
  567. ]]></programlisting>
  568. </example>
  569. <para>
  570. Les polices extraites peuvent être utilisées à la place de n'importe quelle autre
  571. police avec les limitations suivantes : <itemizedlist>
  572. <listitem>
  573. <para>
  574. La police extraite peut être employée seulement dans le cadre du
  575. document à partir duquel elle a été extraite.
  576. </para>
  577. </listitem>
  578. <listitem>
  579. <para>
  580. Les possibles programmes de polices incorporées ne sont pas extraits
  581. réellement. La police ainsi extraite ne peut pas fournir la métrique
  582. correcte de police et la police originale doit être utilisée pour les
  583. calculs de largeur des textes : <programlisting language="php"><![CDATA[
  584. ...
  585. $police = $pdf->extractFont($fontName);
  586. $policeOriginal = Zend_Pdf_Font::fontWithPath($cheminVersPolices);
  587. /* utilisation d'une police extraite */
  588. $page->setFont($police, $taillePolice);
  589. $xPosition = $x;
  590. for ($charIndex = 0; $charIndex < strlen($text); $charIndex++) {
  591. $page->drawText($text[$charIndex], $xPosition, $y);
  592. // Use original font for text width calculation
  593. $width = $originalFont->widthForGlyph(
  594. $originalFont->glyphNumberForCharacter($text[$charIndex])
  595. );
  596. $xPosition += $width / $originalFont->getUnitsPerEm() * $taillePolice;
  597. }
  598. ...
  599. ]]></programlisting></para>
  600. </listitem>
  601. </itemizedlist>
  602. </para>
  603. </sect2>
  604. <sect2 id="zend.pdf.drawing.image-drawing">
  605. <title>Insertion d'images</title>
  606. <para>
  607. La classe <classname>Zend_Pdf_Page</classname> fournis la méthode
  608. <methodname>drawImage()</methodname> pour dessiner une image :
  609. </para>
  610. <para>
  611. <programlisting language="php"><![CDATA[
  612. /**
  613. * Insère une image à la position spécifiée dans la page
  614. *
  615. * @param Zend_Pdf_Resource_Image $image
  616. * @param float $x1
  617. * @param float $y1
  618. * @param float $x2
  619. * @param float $y2
  620. * @return Zend_Pdf_Page
  621. */
  622. public function drawImage(Zend_Pdf_Resource_Image $image, $x1, $y1, $x2, $y2);
  623. ]]></programlisting></para>
  624. <para>
  625. Les objets Image peuvent être créés avec la méthode
  626. <methodname>Zend_Pdf_Image::imageWithPath($filePath)</methodname> (les images JPG, PNG et
  627. TIFF sont maintenant supportées) :
  628. </para>
  629. <example id="zend.pdf.drawing.image-drawing.example-1">
  630. <title>Insertion d'images</title>
  631. <programlisting language="php"><![CDATA[
  632. ...
  633. //Charger une image
  634. $image = Zend_Pdf_Image::imageWithPath('mon_image.jpg');
  635. $pdfPage->drawImage($image, 100, 100, 400, 300);
  636. ...
  637. ]]></programlisting>
  638. </example>
  639. <para>
  640. <emphasis>Important ! Le support JPEG nécessite que l'extension <acronym>PHP</acronym> GD soit
  641. installé.</emphasis> <emphasis>Important ! Le support PNG nécessite que l'extension ZLIB
  642. soit configuré pour accepter les images avec canaux Alpha.</emphasis>
  643. </para>
  644. <para>
  645. Lisez la documentation de <acronym>PHP</acronym> pour plus d'informations (<ulink
  646. url="http://www.php.net/manual/fr/ref.image.php">http://www.php.net/manual/fr/ref.image.php</ulink>
  647. et <ulink
  648. url="http://www.php.net/manual/fr/ref.zlib.php">http://www.php.net/manual/fr/ref.zlib.php</ulink>).
  649. </para>
  650. </sect2>
  651. <sect2 id="zend.pdf.drawing.line-drawing-style">
  652. <title>Style de lignes</title>
  653. <para>
  654. Le style de ligne est définit par l'épaisseur, la couleur et le style de tiret.
  655. Tout ces paramètres peuvent être assignés par les méthodes de la classe
  656. <classname>Zend_Pdf_Page</classname> :
  657. </para>
  658. <para>
  659. <programlisting language="php"><![CDATA[
  660. /** Choisit la couleur de ligne. */
  661. public function setLineColor(Zend_Pdf_Color $color);
  662. /** Choisit l'épaisseur de ligne. */
  663. public function setLineWidth(float $width);
  664. /**
  665. * Choisit le modèle de tiret.
  666. *
  667. * modele est un tableau de floats: array(longueur_visible,
  668. * longueur_invisible, longueur_visible, longueur_invisible,
  669. * ...)
  670. * phase est le décalage à partir du début de la ligne.
  671. *
  672. * @param array $modele
  673. * @param array $phase
  674. * @return Zend_Pdf_Page
  675. */
  676. public function setLineDashingPattern($pattern, $phase = 0);
  677. ]]></programlisting></para>
  678. </sect2>
  679. <sect2 id="zend.pdf.drawing.fill-style">
  680. <title>Style de remplissage</title>
  681. <para>
  682. Les méthodes <methodname>Zend_Pdf_Page::drawRectangle()</methodname>,
  683. <methodname>Zend_Pdf_Page::drawPoligon()</methodname>,
  684. <methodname>Zend_Pdf_Page::drawCircle()</methodname> et
  685. <methodname>Zend_Pdf_Page::drawEllipse()</methodname> prennent en argument optionnel le
  686. type de remplissage: <varname>$fillType</varname>. Il peut être :
  687. </para>
  688. <itemizedlist>
  689. <listitem>
  690. <para>Zend_Pdf_Page::SHAPE_DRAW_STROKE - trace le contour de la forme</para>
  691. </listitem>
  692. <listitem>
  693. <para>Zend_Pdf_Page::SHAPE_DRAW_FILL - remplit uniquement la forme</para>
  694. </listitem>
  695. <listitem>
  696. <para>
  697. Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - remplissage et contour (par
  698. défaut)
  699. </para>
  700. </listitem>
  701. </itemizedlist>
  702. <para>
  703. La méthode <methodname>Zend_Pdf_Page::drawPoligon()</methodname> prend aussi
  704. paramètre supplémentaire <varname>$fillMethod</varname> :
  705. </para>
  706. <itemizedlist>
  707. <listitem>
  708. <para>
  709. $fillMethod = Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING (par
  710. défaut)
  711. </para>
  712. <para>
  713. La <citetitle>référence du format <acronym>PDF</acronym></citetitle> décrit la règle comme
  714. ceci : <blockquote>
  715. <para>
  716. The nonzero winding number rule determines whether a given point
  717. is inside a path by conceptually drawing a ray from that point to
  718. infinity in any direction and then examining the places where a segment
  719. of the path crosses the ray. Starting with a count of 0, the rule adds 1
  720. each time a path segment crosses the ray from left to right and
  721. subtracts 1 each time a segment crosses from right to left. After
  722. counting all the crossings, if the result is 0 then the point is outside
  723. the path; otherwise it is inside. Note: The method just described does
  724. not specify what to do if a path segment coincides with or is tangent to
  725. the chosen ray. Since the direction of the ray is arbitrary, the rule
  726. simply chooses a ray that does not encounter such problem intersections.
  727. For simple convex paths, the nonzero winding number rule defines the
  728. inside and outside as one would intuitively expect. The more interesting
  729. cases are those involving complex or self-intersecting paths like the
  730. ones shown in Figure 4.10 (in a <acronym>PDF</acronym> Reference). For a path consisting of
  731. a five-pointed star, drawn with five connected straight line segments
  732. intersecting each other, the rule considers the inside to be the entire
  733. area enclosed by the star, including the pentagon in the center. For a
  734. path composed of two concentric circles, the areas enclosed by both
  735. circles are considered to be inside, provided that both are drawn in the
  736. same direction. If the circles are drawn in opposite directions, only
  737. the "doughnut" shape between them is inside, according to the rule; the
  738. "doughnut hole" is outside.
  739. </para>
  740. </blockquote>
  741. </para>
  742. </listitem>
  743. <listitem>
  744. <para>Zend_Pdf_Page::FILL_METHOD_EVEN_ODD</para>
  745. <para>
  746. La <citetitle>référence du format <acronym>PDF</acronym></citetitle> décrit la règle comme
  747. ceci : <blockquote>
  748. <para>
  749. An alternative to the nonzero winding number rule is the even-odd
  750. rule. This rule determines the "insideness" of a point by drawing a ray
  751. from that point in any direction and simply counting the number of path
  752. segments that cross the ray, regardless of direction. If this number is
  753. odd, the point is inside; if even, the point is outside. This yields the
  754. same results as the nonzero winding number rule for paths with simple
  755. shapes, but produces different results for more complex shapes. Figure
  756. 4.11 (in a <acronym>PDF</acronym> Reference) shows the effects of applying the even-odd
  757. rule to complex paths. For the five-pointed star, the rule considers the
  758. triangular points to be inside the path, but not the pentagon in the
  759. center. For the two concentric circles, only the "doughnut" shape
  760. between the two circles is considered inside, regardless of the
  761. directions in which the circles are drawn.
  762. </para>
  763. </blockquote>
  764. </para>
  765. </listitem>
  766. </itemizedlist>
  767. </sect2>
  768. <sect2 id="zend.pdf.drawing.linear-transformations">
  769. <title>Transformations linéaires</title>
  770. <sect3 id="zend.pdf.drawing.linear-transformations.rotations">
  771. <title>Rotations</title>
  772. <para>
  773. La page <acronym>PDF</acronym> page peut être tourné avant d'appliquer toute opération de dessin.
  774. Ceci peut être fait avec la méthode <methodname>Zend_Pdf_Page::rotate()</methodname>
  775. :
  776. </para>
  777. <programlisting language="php"><![CDATA[
  778. /**
  779. * Rotation de la page
  780. *
  781. * @param float $x - la coordonnée X du point de rotation
  782. * @param float $y - la coordonnée X du point de rotation
  783. * @param float $angle - angle de rotation
  784. * @return Zend_Pdf_Page
  785. */
  786. public function rotate($x, $y, $angle);
  787. ]]></programlisting>
  788. </sect3>
  789. <sect3 id="zend.pdf.drawing.linear-transformations.scale">
  790. <title>A partir de Zend Framework 1.8, mise à l'échelle</title>
  791. <para>
  792. La mise à l'échelle est fournie par la méthode
  793. <methodname>Zend_Pdf_Page::scale()</methodname> :
  794. </para>
  795. <programlisting language="php"><![CDATA[
  796. /**
  797. * Mise à l'échelle
  798. *
  799. * @param float $xScale - X dimention scale factor
  800. * @param float $yScale - Y dimention scale factor
  801. * @return Zend_Pdf_Page
  802. */
  803. public function scale($xScale, $yScale);
  804. ]]></programlisting>
  805. </sect3>
  806. <sect3 id="zend.pdf.drawing.linear-transformations.translate">
  807. <title>A partir de Zend Framework 1.8, décalage</title>
  808. <para>
  809. Le décalage du système de coordonnées est réalisé par la méthode
  810. <methodname>Zend_Pdf_Page::translate()</methodname> :
  811. </para>
  812. <programlisting language="php"><![CDATA[
  813. /**
  814. * Décalage du système de coordonnées
  815. *
  816. * @param float $xShift - coordonnées X du décalage
  817. * @param float $yShift - coordonnées Y du décalage
  818. * @return Zend_Pdf_Page
  819. */
  820. public function translate($xShift, $yShift);
  821. ]]></programlisting>
  822. </sect3>
  823. <sect3 id="zend.pdf.drawing.linear-transformations.skew">
  824. <title>A partir de Zend Framework 1.8, mise en biais</title>
  825. <para>
  826. La mise en biais de la page peut être réalisé par la méthode
  827. <methodname>Zend_Pdf_Page::skew()</methodname> :
  828. </para>
  829. <programlisting language="php"><![CDATA[
  830. /**
  831. * Mise en biais du système de coordonnées
  832. *
  833. * @param float $x - the X co-ordinate of axis skew point
  834. * @param float $y - the Y co-ordinate of axis skew point
  835. * @param float $xAngle - X axis skew angle
  836. * @param float $yAngle - Y axis skew angle
  837. * @return Zend_Pdf_Page
  838. */
  839. public function skew($x, $y, $xAngle, $yAngle);
  840. ]]></programlisting>
  841. </sect3>
  842. </sect2>
  843. <sect2 id="zend.pdf.drawing.save-restore">
  844. <title>Sauvegarder et restaurer l'état graphique</title>
  845. <para>
  846. L'état graphique (police courante, taille de caractère, couleur de ligne, couleur
  847. de remplissage, style de ligne, sens de la page, zone de dessin) peut-être sauvegarder à
  848. tout moment. L'opération de sauvegarde empile le contexte dans une pile de contexte
  849. graphique, l'opération de restauration récupère le contexte depuis la pile.
  850. </para>
  851. <para>
  852. Il y a deux méthodes dans la classe <classname>Zend_Pdf_Page</classname> pour
  853. réaliser ces opérations :
  854. </para>
  855. <para>
  856. <programlisting language="php"><![CDATA[
  857. /**
  858. * Sauvegarde l'état graphique de la page.
  859. * Cela prend un instantané des styles courants, des zones de dessins
  860. * et de toutes les rotations/translations/changements de taille appliqués.
  861. *
  862. * @return Zend_Pdf_Page
  863. */
  864. public function saveGS();
  865. /**
  866. * Restaure le dernier état graphique sauvegarder avec saveGS().
  867. *
  868. * @return Zend_Pdf_Page
  869. */
  870. public function restoreGS();
  871. ]]></programlisting></para>
  872. </sect2>
  873. <sect2 id="zend.pdf.drawing.clipping">
  874. <title>Zone de dessin</title>
  875. <para>
  876. Le format <acronym>PDF</acronym> et le module Zend_Pdf supporte le découpage de la zone de dessin. La
  877. zone de dessin courante limite la zone de la page affectée par l'utilisation des
  878. opérateurs de dessins. Initialement c'est toute la page.
  879. </para>
  880. <para>
  881. La classe <classname>Zend_Pdf_Page</classname> fournit des méthodes pour les
  882. opérations de découpage.
  883. </para>
  884. <para>
  885. <programlisting language="php"><![CDATA[
  886. /**
  887. * Découpe la zone courante avec un rectangle.
  888. *
  889. * @param float $x1
  890. * @param float $y1
  891. * @param float $x2
  892. * @param float $y2
  893. * @return Zend_Pdf_Page
  894. */
  895. public function clipRectangle($x1, $y1, $x2, $y2);
  896. ]]></programlisting></para>
  897. <para>
  898. <programlisting language="php"><![CDATA[
  899. /**
  900. * Découpe la zone courante avec un polygone.
  901. *
  902. * @param array $x - tableau de float (les coordonnées X des sommets)
  903. * @param array $y - tableau de float (les coordonnées Y des sommets)
  904. * @param integer $fillMethod
  905. * @return Zend_Pdf_Page
  906. */
  907. public function clipPolygon(
  908. $x, $y, $fillMethod = Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING);
  909. ]]></programlisting></para>
  910. <para>
  911. <programlisting language="php"><![CDATA[
  912. /**
  913. * Découpe la zone courante avec un cercle.
  914. *
  915. * @param float $x
  916. * @param float $y
  917. * @param float $radius
  918. * @param float $startAngle
  919. * @param float $endAngle
  920. * @return Zend_Pdf_Page
  921. */
  922. public function clipCircle(
  923. $x, $y, $radius, $startAngle = null, $endAngle = null);
  924. ]]></programlisting></para>
  925. <para>
  926. <programlisting language="php"><![CDATA[
  927. /**
  928. * Découpe la zone courante avec une ellipse.
  929. *
  930. * Signatures des méthodes:
  931. * drawEllipse($x1, $y1, $x2, $y2);
  932. * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle);
  933. *
  934. * @todo s'occuper des cas spéciaux avec $x2-$x1 == 0 ou $y2-$y1 == 0
  935. *
  936. * @param float $x1
  937. * @param float $y1
  938. * @param float $x2
  939. * @param float $y2
  940. * @param float $startAngle
  941. * @param float $endAngle
  942. * @return Zend_Pdf_Page
  943. */
  944. public function clipEllipse(
  945. $x1, $y1, $x2, $y2, $startAngle = null, $endAngle = null);
  946. ]]></programlisting></para>
  947. </sect2>
  948. <sect2 id="zend.pdf.drawing.styles">
  949. <title>Styles</title>
  950. <para>
  951. La classe <classname>Zend_Pdf_Style</classname> fournit les fonctionnalités de
  952. style.
  953. </para>
  954. <para>
  955. Les styles peuvent être utilisés pour stocker des paramètre d'état graphique et de
  956. les appliquer à une page <acronym>PDF</acronym> en une seule opération :
  957. </para>
  958. <para>
  959. <programlisting language="php"><![CDATA[
  960. /**
  961. * Choisit le style à utiliser pour les futures opérations
  962. * de dessin sur cette page
  963. *
  964. * @param Zend_Pdf_Style $style
  965. * @return Zend_Pdf_Page
  966. */
  967. public function setStyle(Zend_Pdf_Style $style);
  968. /**
  969. * Renvoie le style appliqué à la page.
  970. *
  971. * @return Zend_Pdf_Style|null
  972. */
  973. public function getStyle();
  974. ]]></programlisting></para>
  975. <para>
  976. La classe <classname>Zend_Pdf_Style</classname> fournit des méthodes pour choisir
  977. ou récupérer différents paramètres de l'état graphique :
  978. </para>
  979. <para>
  980. <programlisting language="php"><![CDATA[
  981. /**
  982. * Choisit la couleur de ligne.
  983. *
  984. * @param Zend_Pdf_Color $color
  985. * @return Zend_Pdf_Page
  986. */
  987. public function setLineColor(Zend_Pdf_Color $color);
  988. ]]></programlisting></para>
  989. <para>
  990. <programlisting language="php"><![CDATA[
  991. /**
  992. * Récupère la couleur de ligne.
  993. *
  994. * @return Zend_Pdf_Color|null
  995. * @return Zend_Pdf_Page
  996. */
  997. public function getLineColor();
  998. ]]></programlisting></para>
  999. <para>
  1000. <programlisting language="php"><![CDATA[
  1001. /**
  1002. * Choisit l'épaisseur de ligne.
  1003. *
  1004. * @param float $width
  1005. * @return Zend_Pdf_Page
  1006. */
  1007. public function setLineWidth($width);
  1008. ]]></programlisting></para>
  1009. <para>
  1010. <programlisting language="php"><![CDATA[
  1011. /**
  1012. * Récupère l'épaisseur de ligne.
  1013. *
  1014. * @return float
  1015. * @return Zend_Pdf_Page
  1016. */
  1017. public function getLineWidth($width);
  1018. ]]></programlisting></para>
  1019. <para>
  1020. <programlisting language="php"><![CDATA[
  1021. /**
  1022. * Choisit le style de tiret
  1023. *
  1024. * @param array $pattern
  1025. * @param float $phase
  1026. * @return Zend_Pdf_Page
  1027. */
  1028. public function setLineDashingPattern($pattern, $phase = 0);
  1029. ]]></programlisting></para>
  1030. <para>
  1031. <programlisting language="php"><![CDATA[
  1032. /**
  1033. * Récupère le style de tiret
  1034. *
  1035. * @return array
  1036. */
  1037. public function getLineDashingPattern();
  1038. ]]></programlisting></para>
  1039. <para>
  1040. <programlisting language="php"><![CDATA[
  1041. /**
  1042. * Récupère le modèle de tiret
  1043. *
  1044. * @return float
  1045. */
  1046. public function getLineDashingPhase();
  1047. ]]></programlisting></para>
  1048. <para>
  1049. <programlisting language="php"><![CDATA[
  1050. /**
  1051. * Choisit la couleur de remplissage.
  1052. *
  1053. * @param Zend_Pdf_Color $color
  1054. * @return Zend_Pdf_Page
  1055. */
  1056. public function setFillColor(Zend_Pdf_Color $color);
  1057. ]]></programlisting></para>
  1058. <para>
  1059. <programlisting language="php"><![CDATA[
  1060. /**
  1061. * Récupère la couleur de remplissage.
  1062. *
  1063. * @return Zend_Pdf_Color|null
  1064. */
  1065. public function getFillColor();
  1066. ]]></programlisting></para>
  1067. <para>
  1068. <programlisting language="php"><![CDATA[
  1069. /**
  1070. * Choisit la police.
  1071. *
  1072. * @param Zend_Pdf_Font $font
  1073. * @param Zend_Pdf_Resource_Font $font
  1074. * @param float $fontSize
  1075. */
  1076. public function setFont(Zend_Pdf_Resource_Font $font, $fontSize);
  1077. ]]></programlisting></para>
  1078. <para>
  1079. <programlisting language="php"><![CDATA[
  1080. /**
  1081. * Modifie la taille de police.
  1082. *
  1083. * @param float $fontSize
  1084. * @return Zend_Pdf_Page
  1085. */
  1086. public function setFontSize($fontSize);
  1087. ]]></programlisting></para>
  1088. <para>
  1089. <programlisting language="php"><![CDATA[
  1090. /**
  1091. * Récupère la police courante
  1092. *
  1093. * @return Zend_Pdf_Resource_Font $font
  1094. */
  1095. public function getFont();
  1096. ]]></programlisting></para>
  1097. <para>
  1098. <programlisting language="php"><![CDATA[
  1099. /**
  1100. * Récupère la taille de la police
  1101. *
  1102. * @return float $fontSize
  1103. */
  1104. public function getFontSize();
  1105. ]]></programlisting></para>
  1106. </sect2>
  1107. <sect2 id="zend.pdf.drawing.alpha">
  1108. <title>Transparence</title>
  1109. <para>
  1110. Le module <classname>Zend_Pdf</classname> supporte la gestion de la
  1111. transparence.
  1112. </para>
  1113. <para>
  1114. La transparence peut être paramétré en utilisant la méthode
  1115. <methodname>Zend_Pdf_Page::setAlpha()</methodname> : <programlisting language="php"><![CDATA[
  1116. /**
  1117. * Règle la transparence
  1118. *
  1119. * $alpha == 0 - transparent
  1120. * $alpha == 1 - opaque
  1121. *
  1122. * Transparency modes, supported by PDF:
  1123. * Normal (default), Multiply, Screen, Overlay, Darken,
  1124. * Lighten, ColorDodge, ColorBurn, HardLight,
  1125. * SoftLight, Difference, Exclusion
  1126. *
  1127. * @param float $alpha
  1128. * @param string $mode
  1129. * @throws Zend_Pdf_Exception
  1130. * @return Zend_Pdf_Page
  1131. */
  1132. public function setAlpha($alpha, $mode = 'Normal');
  1133. ]]></programlisting></para>
  1134. </sect2>
  1135. </sect1>