Zend_Pdf-Properties.xml 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 20872 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.pdf.info">
  5. <!-- @todo review and revise upon completion of refactoring -->
  6. <title>Informação do Documento e Metadados</title>
  7. <para>
  8. Um documento <acronym>PDF</acronym> deve incluir informações gerais como o título do
  9. documento, autor, e datas de criação e modificação.
  10. </para>
  11. <para>
  12. Historicamente essas informações são armazenadas com o uso de estruturas especiais. Esta
  13. estrutura está disponível para leitura e escrita como uma matriz associativa usando a
  14. propriedade pública <code>properties</code> dos objetos <classname>Zend_Pdf</classname>:
  15. <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'] = 'Novo Título.';
  20. $pdf->save($pdfPath);
  21. ]]></programlisting>
  22. </para>
  23. <para>
  24. As seguintes chaves são definidas pelo padrão <acronym>PDF</acronym> v1.4 (Acrobat 5):
  25. <itemizedlist>
  26. <listitem>
  27. <para>
  28. <emphasis>Title</emphasis> - string, opcional, o título do documento.
  29. </para>
  30. </listitem>
  31. <listitem>
  32. <para>
  33. <emphasis>Author</emphasis> - string, opcional, o nome da pessoa que criou o
  34. documento.
  35. </para>
  36. </listitem>
  37. <listitem>
  38. <para>
  39. <emphasis>Subject</emphasis> - string, opcional, o assunto do documento.
  40. </para>
  41. </listitem>
  42. <listitem>
  43. <para>
  44. <emphasis>Keywords</emphasis> - string, opcional, palavras-chave associadas ao
  45. documento.
  46. </para>
  47. </listitem>
  48. <listitem>
  49. <para>
  50. <emphasis>Creator</emphasis> - string, opcional, se o documento foi convertido
  51. para <acronym>PDF</acronym> a partir de outro formato, o nome da aplicação (por
  52. exemplo, Adobe FrameMaker®) que criou o documento original.
  53. </para>
  54. </listitem>
  55. <listitem>
  56. <para>
  57. <emphasis>Producer</emphasis> - string, opcional, se o documento foi convertido
  58. para <acronym>PDF</acronym> a partir de outro formato, o nome da aplicação (por
  59. exemplo, Acrobat Distiller) que o converteu para <acronym>PDF</acronym>.
  60. </para>
  61. </listitem>
  62. <listitem>
  63. <para>
  64. <emphasis>CreationDate</emphasis> - string, opcional, a data e a hora na qual o
  65. documento foi criado, na seguinte forma: "D:YYYYMMDDHHmmSSOHH'mm'", onde:
  66. <itemizedlist>
  67. <listitem>
  68. <para>
  69. <emphasis>YYYY</emphasis> é o ano.
  70. </para>
  71. </listitem>
  72. <listitem>
  73. <para>
  74. <emphasis>MM</emphasis> é o mês.
  75. </para>
  76. </listitem>
  77. <listitem>
  78. <para>
  79. <emphasis>DD</emphasis> é o dia (01–31).
  80. </para>
  81. </listitem>
  82. <listitem>
  83. <para>
  84. <emphasis>HH</emphasis> é a hora (00–23).
  85. </para>
  86. </listitem>
  87. <listitem>
  88. <para>
  89. <emphasis>mm</emphasis> é o minuto (00–59).
  90. </para>
  91. </listitem>
  92. <listitem>
  93. <para>
  94. <emphasis>SS</emphasis> é o segundo (00–59).
  95. </para>
  96. </listitem>
  97. <listitem>
  98. <para>
  99. <emphasis>O</emphasis> é a relação da hora local com a Hora
  100. Universal (UT), denotada por um dos caracteres +, −, ou Z (veja
  101. abaixo).
  102. </para>
  103. </listitem>
  104. <listitem>
  105. <para>
  106. <emphasis>HH</emphasis> seguido por ' é o valor absoluto da
  107. diferença da Hora Universal em horas (00–23).
  108. </para>
  109. </listitem>
  110. <listitem>
  111. <para>
  112. <emphasis>mm</emphasis> seguido por ' é o valor absoluto da
  113. diferença da Hora Universal em minutos (00–59).
  114. </para>
  115. </listitem>
  116. </itemizedlist>
  117. O apóstrofo (') depois do HH e do mm é parte da sintaxe. Todos os campos depois
  118. do ano são opcionais. (O prefixo D:, embora também seja opcional, é fortemente
  119. recomendado.) Os valores padrões para MM e DD são, para ambos, 01; todos os
  120. outros campos numéricos têm valor padrão zero. Um sinal positivo (+) no valor de
  121. um campo significa que a hora local é mais tarde que a Hora Universal, e um
  122. sinal negativo (−) indica que é mais cedo, e a letra Z indica que a hora é igual
  123. à Hora Universal. Se nenhuma informação sobre à Hora Universal for específicada,
  124. a relação da hora com a Hora Universal é considerada desconhecida. Sendo ou não
  125. conhecido o fuso horário, o resto da data deve ser especificado na hora local.
  126. </para>
  127. <para>
  128. Por exemplo, 23 de Dezembro de 1998, 7:52 da noite, U.S. Pacific Standard Time,
  129. é representado pela string "D:199812231952−08'00'".
  130. </para>
  131. </listitem>
  132. <listitem>
  133. <para>
  134. <emphasis>ModDate</emphasis> - string, opcional, a data e a hora da atualização
  135. mais recente no documento, na mesma forma de <emphasis>CreationDate</emphasis>.
  136. </para>
  137. </listitem>
  138. <listitem>
  139. <para>
  140. <emphasis>Trapped</emphasis> - booleano, opcional, indica se o documento foi
  141. modificado para a inclusão de informações "trapped".
  142. <itemizedlist>
  143. <listitem>
  144. <para>
  145. <emphasis><constant>TRUE</constant></emphasis> - The document has
  146. been fully trapped; no further trapping is needed.
  147. </para>
  148. </listitem>
  149. <listitem>
  150. <para>
  151. <emphasis><constant>FALSE</constant></emphasis> - The document has
  152. not yet been trapped; any desired trapping must still be done.
  153. </para>
  154. </listitem>
  155. <listitem>
  156. <para>
  157. <emphasis><constant>NULL</constant></emphasis> - Either it is
  158. unknown whether the document has been trapped or it has been partly
  159. but not yet fully trapped; some additional trapping may still be
  160. needed.
  161. </para>
  162. </listitem>
  163. </itemizedlist>
  164. </para>
  165. </listitem>
  166. </itemizedlist>
  167. </para>
  168. <para>
  169. Desde a versão 1.6 do <acronym>PDF</acronym>, os metadados podem ser armazenados em um
  170. documento <acronym>XML</acronym> especial anexado ao <acronym>PDF</acronym> (XMP - <ulink
  171. url="http://www.adobe.com/products/xmp/">Extensible Metadata Platform</ulink>).
  172. </para>
  173. <para>
  174. Este documento XML pode ser recuperado e anexado ao PDF com os métodos
  175. <methodname>Zend_Pdf::getMetadata()</methodname> e
  176. <methodname>Zend_Pdf::setMetadata($metadata)</methodname>:
  177. <programlisting language="php"><![CDATA[
  178. $pdf = Zend_Pdf::load($pdfPath);
  179. $metadata = $pdf->getMetadata();
  180. $metadataDOM = new DOMDocument();
  181. $metadataDOM->loadXML($metadata);
  182. $xpath = new DOMXPath($metadataDOM);
  183. $pdfPreffixNamespaceURI = $xpath->query('/rdf:RDF/rdf:Description')
  184. ->item(0)
  185. ->lookupNamespaceURI('pdf');
  186. $xpath->registerNamespace('pdf', $pdfPreffixNamespaceURI);
  187. $titleNode = $xpath->query('/rdf:RDF/rdf:Description/pdf:Title')->item(0);
  188. $title = $titleNode->nodeValue;
  189. ...
  190. $titleNode->nodeValue = 'Novo título';
  191. $pdf->setMetadata($metadataDOM->saveXML());
  192. $pdf->save($pdfPath);
  193. ]]></programlisting>
  194. </para>
  195. <para>
  196. Propriedades comuns são duplicadas na estrutura Info e nos Metadados do documento (se
  197. presente). Agora é responsabilidade da aplicação do usuário mantê-los sincronizados.
  198. </para>
  199. </sect1>
  200. <!--
  201. vim:se ts=4 sw=4 et:
  202. -->