Zend_Pdf-Properties.xml 9.6 KB

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