1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 20115 -->
4 <sect1 id="zend.pdf.info">
5 <!-- @todo review and revise upon completion of refactoring -->
6 <title>Información del Documento y Metadatos</title>
7 <para> Un documento <acronym>PDF</acronym> puede incluir información general
8 como el título del documento, autor, la creación y modificación de
10 <para> Históricamente, esta información se almacena usando una estructura
11 especial de Información. Esta estructura está disponible para lectura y
12 la escritura como una array asociativo utilizando propiedades públicas
13 <methodname>properties</methodname> de objetos
14 <classname>Zend_Pdf</classname> : <programlisting language="php"><![CDATA[
15 $pdf = Zend_Pdf::load($pdfPath);
17 echo $pdf->properties['Title'] . "\n";
18 echo $pdf->properties['Author'] . "\n";
20 $pdf->properties['Title'] = 'New Title.';
24 <para> Las siguientes claves están definidas por v1.4 <acronym>PDF</acronym>
25 (Acrobat 5) estándar: <itemizedlist>
28 <emphasis>Title</emphasis> - string, opcional, el título del
33 <emphasis>Author</emphasis> - string, opcional, el nombre de
34 la persona que creó el documento. </para>
38 <emphasis>Subject</emphasis> - string, opcional, el tema del
43 <emphasis>Keywords</emphasis> - string, opcional, las
44 palabras clave asociadas con el documento. </para>
48 <emphasis>Creator</emphasis> - string, opcional, si el
49 documento se convirtió desde otro formato a
50 <acronym>PDF</acronym> , el nombre de la aplicación (por
51 ejemplo, Adobe FrameMaker ®) que creó el documento original
52 a partir del cual se convirtió. </para>
56 <emphasis>Producer</emphasis> - string, opcional, si el
57 documento se convirtió desde otro formato a
58 <acronym>PDF</acronym> , el nombre de la aplicación (por
59 ejemplo, Acrobat Distiller), que lo convirtió a
60 <acronym>PDF</acronym> . </para>
64 <emphasis>CreationDate</emphasis> - string, opcional, la
65 fecha y la hora en que el documento fue creado, en la forma
66 siguiente: "D:YYYYMMDDHHmmSSOHH'mm'", en la que: <itemizedlist>
69 <emphasis>YYYY</emphasis> es el año. </para>
73 <emphasis>MM</emphasis> es el mes. </para>
77 <emphasis>DD</emphasis> es el día (01–31).
82 <emphasis>HH</emphasis> es la hora (00–23).
87 <emphasis>mm</emphasis> es el minuto (00–59).
92 <emphasis>SS</emphasis> es el segundo (00–59).
97 <emphasis>O</emphasis> es la relación de la hora
98 local a la hora universal (UT), identificado por
99 uno de los caracteres +, -, o Z (véase más
104 <emphasis>HH</emphasis> seguido de ' es el valor
105 absoluto de la posición de la UT en horas
110 <emphasis>mm</emphasis> seguido de ' es el valor
111 absoluto de la posición de la UT en minutos
114 </itemizedlist> El carácter apóstrofe (') después de HH mm
115 es parte de la sintaxis. Todos los campos después del año
116 son opcionales. (El prefijo D:, aunque también opcional, se
117 recomienda fuertemente.) Los valores por defecto para MM y
118 DD son 01, y todos los demás valores numéricos de los campos
119 son cero por defecto. Un signo más (+) como el valor del
120 campo O significa que la hora local es más tarde que la UT,
121 un signo menos (-) que la hora local es anterior a la UT, y
122 la letra Z que la hora local es igual a la UT. Si no se
123 especifica la información UT, la relación del tiempo
124 especificado para UT se considera desconocida. Ya sea que la
125 zona horaria se conozca o no, el resto de la fecha debe
126 estar especificada en la hora local. </para>
127 <para>Por ejemplo, el 23 de diciembre de 1998, a las 7:52 PM,
128 hora estándar del Pacífico de EE.UU., está representado por
129 el string "D:199812231952-08'00'". </para>
133 <emphasis>ModDate</emphasis> - string, opcional, la fecha y
134 la hora en que el documento fue modificado mas
135 recientemente, de la misma forma que
136 <emphasis>CreationDate</emphasis> . </para>
140 <emphasis>Trapped</emphasis> - booleano, opcional, indica si
141 el documento ha sido modificado para incluir la captura de
142 información. <itemizedlist>
145 <emphasis><constant>TRUE</constant></emphasis> - El documento ha sido
146 capturado; no se necesitan más capturas. </para>
150 <emphasis><constant>FALSE</constant></emphasis> - El documento aún no
151 ha sido capturado; cualquier captura todavía
152 debe ser hecha. </para>
156 <emphasis><constant>NULL</constant></emphasis> - O bien se desconoce
157 si el documento ha sido capturado o que lo ha
158 sido en parte pero no completamente capturado, y
159 alguna captura adicional puede ser necesaria.
168 <para> Desde <acronym>PDF</acronym> v 1.6 los metadatos se pueden almacenar
169 en el documento <acronym>XML</acronym> especial adjunto al
170 <acronym>PDF</acronym> (XMP - <ulink
171 url="http://www.adobe.com/products/xmp/">Extensible Metadata
172 Platform</ulink> ). </para>
174 <para> Este documento <acronym>XML</acronym> se pueden recuperar y adjuntar
175 al <acronym>PDF</acronym> con los métodos
176 <methodname>Zend_Pdf::getMetadata()</methodname> y
177 <methodname>Zend_Pdf::setMetadata($metadata)</methodname> : <programlisting language="php"><![CDATA[
178 $pdf = Zend_Pdf::load($pdfPath);
179 $metadata = $pdf->getMetadata();
180 $metadataDOM = new DOMDocument();
181 $metadataDOM->loadXML($metadata);
183 $xpath = new DOMXPath($metadataDOM);
184 $pdfPreffixNamespaceURI = $xpath->query('/rdf:RDF/rdf:Description')
186 ->lookupNamespaceURI('pdf');
187 $xpath->registerNamespace('pdf', $pdfPreffixNamespaceURI);
189 $titleNode = $xpath->query('/rdf:RDF/rdf:Description/pdf:Title')->item(0);
190 $title = $titleNode->nodeValue;
193 $titleNode->nodeValue = 'New title';
194 $pdf->setMetadata($metadataDOM->saveXML());
195 $pdf->save($pdfPath);
199 <para>Las propiedades comunes del documento se duplican en la estructura de
200 Info y el documento Metadata (si se presentan). Ahora es responsabilidad
201 del usuario la aplicación para mantenerlos sincronizados.</para>