1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 21829 -->
4 <sect1 id="zend.pdf.info">
5 <!-- @todo review and revise upon completion of refactoring -->
7 <title>Informations du document et métadonnées</title>
10 Un document <acronym>PDF</acronym> peut inclure des informations générales comme le titre du document,
11 l'auteur et les dates de création ou de modification.
15 Historiquement ces informations sont stockées dans une structure spéciale Info. Cette
16 structure est disponible en lecture/écriture sous la forme d'un tableau associatif en
17 utilisant la propriété publique <code>properties</code> des objets
18 <classname>Zend_Pdf</classname> : <programlisting language="php"><![CDATA[
19 $pdf = Zend_Pdf::load($pdfPath);
21 echo $pdf->properties['Title'] . "\n";
22 echo $pdf->properties['Author'] . "\n";
24 $pdf->properties['Title'] = 'Nouveau Titre.';
26 ]]></programlisting></para>
29 Les clés suivantes sont définies par la norme <acronym>PDF</acronym> v1.4 (Acrobat 5) : <itemizedlist>
32 <emphasis>Title</emphasis> - string, optionnel, le titre du
39 <emphasis>Author</emphasis> - string, optionnel, le nom de la personne qui
46 <emphasis>Subject</emphasis> - string, optionnel, le sujet du
53 <emphasis>Keywords</emphasis> - string, optionnel, les mots clés associés
60 <emphasis>Creator</emphasis> - string, optionnel, si le document a été
61 converti en <acronym>PDF</acronym> à partir d'un autre format, le nom de l'application (par
62 exemple, Adobe FrameMaker®) qui a créé le document original à partir duquel il a
69 <emphasis>Producer</emphasis> - string, optionnel, si le document a été
70 converti en <acronym>PDF</acronym> à partir d'un autre format, le nom de l'application (par
71 exemple, Acrobat Distiller) qui l'a converti en <acronym>PDF</acronym>.
77 <emphasis>CreationDate</emphasis> - string, optionnel, la date et l'heure
78 auxquelles le document a été créé sous la forme suivante :
79 "D:YYYYMMDDHHmmSSOHH'mm'", où : <itemizedlist>
81 <para><emphasis>YYYY</emphasis> est la date.</para>
85 <para><emphasis>MM</emphasis> est le mois.</para>
89 <para><emphasis>DD</emphasis> est le jour (01–31).</para>
93 <para><emphasis>HH</emphasis> est l'heure (00–23).</para>
97 <para><emphasis>mm</emphasis> est la minute (00–59).</para>
101 <para><emphasis>SS</emphasis> est la seconde (00–59).</para>
106 <emphasis>O</emphasis> est la différence de l'heure locale par
107 rapport au temps universel (UT), dénoté par un des caractères +, de
108 −, ou de Z (voir ci-dessous).
114 <emphasis>HH</emphasis> suivi par ' est la valeur absolue du
115 décalage par rapport à l'UT en heures (00–23).
121 <emphasis>mm</emphasis> suivi par ' est la valeur absolue du
122 décalage par rapport à l'UT en minutes (00–59).
125 </itemizedlist> Le caractère apostrophe (') après "HH" et "mm" est un
126 élément de la syntaxe. Chaque champs après l'année est optionnel. (Le préfixe
127 "D:", bien que lui aussi optionnel, est fortement recommandé.) Les valeurs par
128 défaut pour "MM" et "DD" sont à "01" ; tous les autres champs numériques ont par
129 défaut des valeurs à zéro. Un signe plus (+) en tant que valeur pour le champs
130 "0" signifie que l'heure locale est après l'UT, un signe moins (-) que l'heure
131 locale est avant l'UT, et la lettre "Z" que l'heure locale est égale à l'UT. Si
132 aucune information concernant l'UT n'est spécifiée, la différence par rapport à
133 l'UT est considérée inconnue. Que le décalage horaire soit connu ou non, le
134 reste de la date devrait être exprimée en heure locale.
138 Par exemple la date "23 décembre 1998 à 19:52 (heure locale U.S.
139 Pacifique)" est représentée par la chaîne "D:199812231952−08'00'".
145 <emphasis>ModDate</emphasis> - string, optionnel, la date et l'heure
146 auxquelles le document a été le plus récemment modifié, sous la même forme que
147 <emphasis>CreationDate</emphasis>.
153 <emphasis>Trapped</emphasis> - boolean, optionnel, indique si le document
154 à été modifié pour inclure une information de "trapping". <itemizedlist>
157 <emphasis>true</emphasis> - Le document a été entièrement
158 "trappé" ; aucun autre "trapping" n'est nécessaire.
164 <emphasis>false</emphasis> - Le document n'a pas encore été
165 "trappé" ; tout "trapping" reste encore à réaliser.
171 <emphasis>null</emphasis> - Soit il est impossible de savoir
172 si le document a été "trappé", soit il a été partiellement "trappé"
173 ; certains "trapping" additionnels sont nécessaires.
183 Depuis la version v1.6 de la norme <acronym>PDF</acronym>, les métadonnées peuvent être stockées dans un
184 document <acronym>XML</acronym> spécial attaché au document <acronym>PDF</acronym> (XMP - <ulink
185 url="http://www.adobe.com/products/xmp/">eXtensible Metadata Platform</ulink>).
189 Ce document XML peut être récupéré et attaché au document PDF avec les méthodes
190 <methodname>Zend_Pdf::getMetadata()</methodname> et
191 <methodname>Zend_Pdf::setMetadata($metadata)</methodname> : <programlisting
193 $pdf = Zend_Pdf::load($pdfPath);
194 $metadata = $pdf->getMetadata();
195 $metadataDOM = new DOMDocument();
196 $metadataDOM->loadXML($metadata);
198 $xpath = new DOMXPath($metadataDOM);
199 $pdfPreffixNamespaceURI = $xpath->query('/rdf:RDF/rdf:Description')
201 ->lookupNamespaceURI('pdf');
202 $xpath->registerNamespace('pdf', $pdfPreffixNamespaceURI);
204 $titleNode = $xpath->query('/rdf:RDF/rdf:Description/pdf:Title')
206 $title = $titleNode->nodeValue;
209 $titleNode->nodeValue = 'Nouveau titre';
210 $pdf->setMetadata($metadataDOM->saveXML());
211 $pdf->save($pdfPath);
212 ]]></programlisting></para>
215 Les propriétés communes du document sont dupliquées dans la structure Info et dans le
216 document de métadonnées (s'il est présent). Il est de la responsabilité de l'utilisateur de
217 l'application de les maintenir synchronisées.