Zend_Pdf-Properties.xml 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  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>
  8. Un documento PDF puede incluir información general como el título del
  9. documento, autor, la creación y modificación de fechas.
  10. </para>
  11. <para>
  12. Históricamente, esta información se almacena usando una estructura especial
  13. de Información. Esta estructura está disponible para lectura y la
  14. escritura como una array asociativo utilizando propiedades públicas
  15. <methodname>properties</methodname> de objetos <classname>Zend_Pdf</classname>:
  16. <programlisting language="php"><![CDATA[
  17. $pdf = Zend_Pdf::load($pdfPath);
  18. echo $pdf->properties['Title'] . "\n";
  19. echo $pdf->properties['Author'] . "\n";
  20. $pdf->properties['Title'] = 'New Title.';
  21. $pdf->save($pdfPath);
  22. ]]></programlisting>
  23. </para>
  24. <para>
  25. Las siguientes claves están definidas por v1.4 PDF (Acrobat 5) estándar:
  26. <itemizedlist>
  27. <listitem>
  28. <para>
  29. <emphasis>Title</emphasis> - string, opcional, el título del documento.
  30. </para>
  31. </listitem>
  32. <listitem>
  33. <para>
  34. <emphasis>Author</emphasis> - string, opcional, el nombre de la persona que creó el documento.
  35. </para>
  36. </listitem>
  37. <listitem>
  38. <para>
  39. <emphasis>Subject</emphasis> - string, opcional, el tema del documento.
  40. </para>
  41. </listitem>
  42. <listitem>
  43. <para>
  44. <emphasis>Keywords</emphasis> - string, opcional, las palabras clave asociadas con el documento.
  45. </para>
  46. </listitem>
  47. <listitem>
  48. <para>
  49. <emphasis>Creator</emphasis> - string, opcional, si el documento
  50. se convirtió desde otro formato a PDF, el nombre de la aplicación
  51. (por ejemplo, Adobe FrameMaker ®) que creó el documento
  52. original a partir del cual se convirtió.
  53. </para>
  54. </listitem>
  55. <listitem>
  56. <para>
  57. <emphasis>Producer</emphasis> - string, opcional, si el
  58. documento se convirtió desde otro formato a PDF, el nombre de
  59. la aplicación (por ejemplo, Acrobat Distiller), que lo
  60. convirtió a PDF.
  61. </para>
  62. </listitem>
  63. <listitem>
  64. <para>
  65. <emphasis>CreationDate</emphasis> - string, opcional,
  66. la fecha y la hora en que el documento fue creado, en la
  67. forma siguiente: "D:YYYYMMDDHHmmSSOHH'mm'", en la que:
  68. <itemizedlist>
  69. <listitem>
  70. <para>
  71. <emphasis>YYYY</emphasis> es el año.
  72. </para>
  73. </listitem>
  74. <listitem>
  75. <para>
  76. <emphasis>MM</emphasis> es el mes.
  77. </para>
  78. </listitem>
  79. <listitem>
  80. <para>
  81. <emphasis>DD</emphasis> es el día (01–31).
  82. </para>
  83. </listitem>
  84. <listitem>
  85. <para>
  86. <emphasis>HH</emphasis> es la hora (00–23).
  87. </para>
  88. </listitem>
  89. <listitem>
  90. <para>
  91. <emphasis>mm</emphasis> es el minuto (00–59).
  92. </para>
  93. </listitem>
  94. <listitem>
  95. <para>
  96. <emphasis>SS</emphasis> es el segundo (00–59).
  97. </para>
  98. </listitem>
  99. <listitem>
  100. <para>
  101. <emphasis>O</emphasis> es la relación de la hora
  102. local a la hora universal (UT), identificado por
  103. uno de los caracteres +, -, o Z (véase más adelante).
  104. </para>
  105. </listitem>
  106. <listitem>
  107. <para>
  108. <emphasis>HH</emphasis> seguido de ' es el valor
  109. absoluto de la posición de la UT en horas (00-23).
  110. </para>
  111. </listitem>
  112. <listitem>
  113. <para>
  114. <emphasis>mm</emphasis> seguido de ' es el valor
  115. absoluto de la posición de la UT en minutos (00-59).
  116. </para>
  117. </listitem>
  118. </itemizedlist>
  119. El carácter apóstrofe (') después de HH mm es parte de la
  120. sintaxis. Todos los campos después del año son opcionales.
  121. (El prefijo D:, aunque también opcional, se recomienda
  122. fuertemente.) Los valores por defecto para MM y DD son 01,
  123. y todos los demás valores numéricos de los campos son cero
  124. por defecto.
  125. Un signo más (+) como el valor del campo O significa que la
  126. hora local es más tarde que la UT, un signo menos (-) que la
  127. hora local es anterior a la UT, y la letra Z que la hora
  128. local es igual a la UT. Si no se especifica la información
  129. UT, la relación del tiempo especificado para UT se considera
  130. desconocida. Ya sea que la zona horaria se conozca o no,
  131. el resto de la fecha debe estar especificada en la hora local.
  132. </para>
  133. <para>
  134. Por ejemplo, el 23 de diciembre de 1998, a las 7:52 PM,
  135. hora estándar del Pacífico de EE.UU., está representado
  136. por el string "D:199812231952-08'00'".
  137. </para>
  138. </listitem>
  139. <listitem>
  140. <para>
  141. <emphasis>ModDate</emphasis> - string, opcional, la fecha y
  142. la hora en que el documento fue modificado mas recientemente,
  143. de la misma forma que <emphasis>CreationDate</emphasis>.
  144. </para>
  145. </listitem>
  146. <listitem>
  147. <para>
  148. <emphasis>Trapped</emphasis> - booleano, opcional, indica si
  149. el documento ha sido modificado para incluir la captura de
  150. información.
  151. <itemizedlist>
  152. <listitem>
  153. <para>
  154. <emphasis>true</emphasis> - El documento ha sido
  155. capturado; no se necesitan más capturas.
  156. </para>
  157. </listitem>
  158. <listitem>
  159. <para>
  160. <emphasis>false</emphasis> - El documento aún no
  161. ha sido capturado; cualquier captura todavía
  162. debe ser hecha.
  163. </para>
  164. </listitem>
  165. <listitem>
  166. <para>
  167. <emphasis>null</emphasis> - O bien se desconoce
  168. si el documento ha sido capturado o que lo ha
  169. sido en parte pero no completamente capturado,
  170. y alguna captura adicional puede ser necesaria.
  171. </para>
  172. </listitem>
  173. </itemizedlist>
  174. </para>
  175. </listitem>
  176. </itemizedlist>
  177. </para>
  178. <para>
  179. Desde PDF v 1.6 los metadatos se pueden almacenar en el documento XML
  180. especial adjunto al PDF
  181. (XMP - <ulink url="http://www.adobe.com/products/xmp/">Extensible Metadata Platform</ulink>).
  182. </para>
  183. <para>
  184. Este documento XML se pueden recuperar y adjuntar al PDF con los métodos
  185. <classname>Zend_Pdf::getMetadata()</classname> y
  186. <classname>Zend_Pdf::setMetadata($metadata)</classname>:
  187. <programlisting language="php"><![CDATA[
  188. $pdf = Zend_Pdf::load($pdfPath);
  189. $metadata = $pdf->getMetadata();
  190. $metadataDOM = new DOMDocument();
  191. $metadataDOM->loadXML($metadata);
  192. $xpath = new DOMXPath($metadataDOM);
  193. $pdfPreffixNamespaceURI = $xpath->query('/rdf:RDF/rdf:Description')
  194. ->item(0)
  195. ->lookupNamespaceURI('pdf');
  196. $xpath->registerNamespace('pdf', $pdfPreffixNamespaceURI);
  197. $titleNode = $xpath->query('/rdf:RDF/rdf:Description/pdf:Title')->item(0);
  198. $title = $titleNode->nodeValue;
  199. ...
  200. $titleNode->nodeValue = 'New title';
  201. $pdf->setMetadata($metadataDOM->saveXML());
  202. $pdf->save($pdfPath);
  203. ]]></programlisting>
  204. </para>
  205. <para>
  206. Las propiedades comunes del documento se duplican en la estructura de
  207. Info y el documento Metadata (si se presentan).
  208. Ahora es responsabilidad del usuario la aplicación para mantenerlos
  209. sincronizados.
  210. </para>
  211. </sect1>
  212. <!--
  213. vim:se ts=4 sw=4 et:
  214. -->