Zend_Pdf-Properties.xml 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.pdf.info">
  5. <!-- @todo review and revise upon completion of refactoring -->
  6. <title>Informations du document et métadonnées</title>
  7. <para>
  8. Un document <acronym>PDF</acronym> peut inclure des informations générales comme le titre du document,
  9. l'auteur et les dates de création ou de modification.
  10. </para>
  11. <para>
  12. Historiquement ces informations sont stockées dans une structure spéciale Info. Cette
  13. structure est disponible en lecture/écriture sous la forme d'un tableau associatif en
  14. utilisant la propriété publique <property>properties</property> des objets
  15. <classname>Zend_Pdf</classname> : <programlisting language="php"><![CDATA[
  16. $pdf = Zend_Pdf::load($pdfPath);
  17. echo $pdf->properties['Title'] . "\n";
  18. echo $pdf->properties['Author'] . "\n";
  19. $pdf->properties['Title'] = 'Nouveau Titre.';
  20. $pdf->save($pdfPath);
  21. ]]></programlisting></para>
  22. <para>
  23. Les clés suivantes sont définies par la norme <acronym>PDF</acronym> v1.4 (Acrobat 5) : <itemizedlist>
  24. <listitem>
  25. <para>
  26. <emphasis>Title</emphasis> - string, optionnel, le titre du
  27. document.
  28. </para>
  29. </listitem>
  30. <listitem>
  31. <para>
  32. <emphasis>Author</emphasis> - string, optionnel, le nom de la personne qui
  33. a créé le document.
  34. </para>
  35. </listitem>
  36. <listitem>
  37. <para>
  38. <emphasis>Subject</emphasis> - string, optionnel, le sujet du
  39. document.
  40. </para>
  41. </listitem>
  42. <listitem>
  43. <para>
  44. <emphasis>Keywords</emphasis> - string, optionnel, les mots clés associés
  45. au document.
  46. </para>
  47. </listitem>
  48. <listitem>
  49. <para>
  50. <emphasis>Creator</emphasis> - string, optionnel, si le document a été
  51. converti en <acronym>PDF</acronym> à partir d'un autre format, le nom de l'application (par
  52. exemple, Adobe FrameMaker®) qui a créé le document original à partir duquel il a
  53. été converti.
  54. </para>
  55. </listitem>
  56. <listitem>
  57. <para>
  58. <emphasis>Producer</emphasis> - string, optionnel, si le document a été
  59. converti en <acronym>PDF</acronym> à partir d'un autre format, le nom de l'application (par
  60. exemple, Acrobat Distiller) qui l'a converti en <acronym>PDF</acronym>.
  61. </para>
  62. </listitem>
  63. <listitem>
  64. <para>
  65. <emphasis>CreationDate</emphasis> - string, optionnel, la date et l'heure
  66. auxquelles le document a été créé sous la forme suivante :
  67. "D:YYYYMMDDHHmmSSOHH'mm'", où : <itemizedlist>
  68. <listitem>
  69. <para><emphasis>YYYY</emphasis> est la date.</para>
  70. </listitem>
  71. <listitem>
  72. <para><emphasis>MM</emphasis> est le mois.</para>
  73. </listitem>
  74. <listitem>
  75. <para><emphasis>DD</emphasis> est le jour (01–31).</para>
  76. </listitem>
  77. <listitem>
  78. <para><emphasis>HH</emphasis> est l'heure (00–23).</para>
  79. </listitem>
  80. <listitem>
  81. <para><emphasis>mm</emphasis> est la minute (00–59).</para>
  82. </listitem>
  83. <listitem>
  84. <para><emphasis>SS</emphasis> est la seconde (00–59).</para>
  85. </listitem>
  86. <listitem>
  87. <para>
  88. <emphasis>O</emphasis> est la différence de l'heure locale par
  89. rapport au temps universel (UT), dénoté par un des caractères +, de
  90. −, ou de Z (voir ci-dessous).
  91. </para>
  92. </listitem>
  93. <listitem>
  94. <para>
  95. <emphasis>HH</emphasis> suivi par ' est la valeur absolue du
  96. décalage par rapport à l'UT en heures (00–23).
  97. </para>
  98. </listitem>
  99. <listitem>
  100. <para>
  101. <emphasis>mm</emphasis> suivi par ' est la valeur absolue du
  102. décalage par rapport à l'UT en minutes (00–59).
  103. </para>
  104. </listitem>
  105. </itemizedlist> Le caractère apostrophe (') après "HH" et "mm" est un
  106. élément de la syntaxe. Chaque champs après l'année est optionnel. (Le préfixe
  107. "D:", bien que lui aussi optionnel, est fortement recommandé.) Les valeurs par
  108. défaut pour "MM" et "DD" sont à "01" ; tous les autres champs numériques ont par
  109. défaut des valeurs à zéro. Un signe plus (+) en tant que valeur pour le champs
  110. "0" signifie que l'heure locale est après l'UT, un signe moins (-) que l'heure
  111. locale est avant l'UT, et la lettre "Z" que l'heure locale est égale à l'UT. Si
  112. aucune information concernant l'UT n'est spécifiée, la différence par rapport à
  113. l'UT est considérée inconnue. Que le décalage horaire soit connu ou non, le
  114. reste de la date devrait être exprimée en heure locale.
  115. </para>
  116. <para>
  117. Par exemple la date "23 décembre 1998 à 19:52 (heure locale U.S.
  118. Pacifique)" est représentée par la chaîne "D:199812231952−08'00'".
  119. </para>
  120. </listitem>
  121. <listitem>
  122. <para>
  123. <emphasis>ModDate</emphasis> - string, optionnel, la date et l'heure
  124. auxquelles le document a été le plus récemment modifié, sous la même forme que
  125. <emphasis>CreationDate</emphasis>.
  126. </para>
  127. </listitem>
  128. <listitem>
  129. <para>
  130. <emphasis>Trapped</emphasis> - boolean, optionnel, indique si le document
  131. à été modifié pour inclure une information de "trapping". <itemizedlist>
  132. <listitem>
  133. <para>
  134. <emphasis>true</emphasis> - Le document a été entièrement
  135. "trappé" ; aucun autre "trapping" n'est nécessaire.
  136. </para>
  137. </listitem>
  138. <listitem>
  139. <para>
  140. <emphasis>false</emphasis> - Le document n'a pas encore été
  141. "trappé" ; tout "trapping" reste encore à réaliser.
  142. </para>
  143. </listitem>
  144. <listitem>
  145. <para>
  146. <emphasis>null</emphasis> - Soit il est impossible de savoir
  147. si le document a été "trappé", soit il a été partiellement "trappé"
  148. ; certains "trapping" additionnels sont nécessaires.
  149. </para>
  150. </listitem>
  151. </itemizedlist>
  152. </para>
  153. </listitem>
  154. </itemizedlist>
  155. </para>
  156. <para>
  157. Depuis la version v1.6 de la norme <acronym>PDF</acronym>, les métadonnées peuvent être stockées dans un
  158. document <acronym>XML</acronym> spécial attaché au document <acronym>PDF</acronym> (XMP - <ulink
  159. url="http://www.adobe.com/products/xmp/">eXtensible Metadata Platform</ulink>).
  160. </para>
  161. <para>
  162. Ce document XML peut être récupéré et attaché au document PDF avec les méthodes
  163. <methodname>Zend_Pdf::getMetadata()</methodname> et
  164. <methodname>Zend_Pdf::setMetadata($metadata)</methodname> : <programlisting
  165. role="php"><![CDATA[
  166. $pdf = Zend_Pdf::load($pdfPath);
  167. $metadata = $pdf->getMetadata();
  168. $metadataDOM = new DOMDocument();
  169. $metadataDOM->loadXML($metadata);
  170. $xpath = new DOMXPath($metadataDOM);
  171. $pdfPreffixNamespaceURI = $xpath->query('/rdf:RDF/rdf:Description')
  172. ->item(0)
  173. ->lookupNamespaceURI('pdf');
  174. $xpath->registerNamespace('pdf', $pdfPreffixNamespaceURI);
  175. $titleNode = $xpath->query('/rdf:RDF/rdf:Description/pdf:Title')
  176. ->item(0);
  177. $title = $titleNode->nodeValue;
  178. ...
  179. $titleNode->nodeValue = 'Nouveau titre';
  180. $pdf->setMetadata($metadataDOM->saveXML());
  181. $pdf->save($pdfPath);
  182. ]]></programlisting></para>
  183. <para>
  184. Les propriétés communes du document sont dupliquées dans la structure Info et dans le
  185. document de métadonnées (s'il est présent). Il est de la responsabilité de l'utilisateur de
  186. l'application de les maintenir synchronisées.
  187. </para>
  188. </sect1>