Zend_Pdf-Properties.xml 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15157 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.pdf.info">
  5. <!-- @todo review and revise upon completion of refactoring -->
  6. <title>Dokument Informationen und Metadaten</title>
  7. <para>
  8. Ein PDF Dokument kann generelle Informationen wie den Titel, Author, und Erstellungs- sowie
  9. Modifikationsdatum enthalten.
  10. </para>
  11. <para>
  12. Historisch wird diese Information durch das Verwenden einer speziellen Info Struktur gespeichert.
  13. Diese struktur kann als assoziatives Array mithilfe der öffentlichen <code>properties</code> Eigenschaft
  14. des <classname>Zend_Pdf</classname> Objektes gelesen und geschrieben werden:
  15. <programlisting role="php"><![CDATA[
  16. $pdf = Zend_Pdf::load($pdfPath);
  17. echo $pdf->properties['Title'] . "\n";
  18. echo $pdf->properties['Author'] . "\n";
  19. $pdf->properties['Title'] = 'Neuer Titel.';
  20. $pdf->save($pdfPath);
  21. ]]></programlisting>
  22. </para>
  23. <para>
  24. Die folgenden Schlüssel sind im PDF v1.4 (Acrobat 5) Standard definiert:
  25. <itemizedlist>
  26. <listitem>
  27. <para>
  28. <emphasis>Title</emphasis> - String, optional, der Titel des Dokuments.
  29. </para>
  30. </listitem>
  31. <listitem>
  32. <para>
  33. <emphasis>Author</emphasis> - String, optional, der Name der Person die das Dokument
  34. erstellt hat.
  35. </para>
  36. </listitem>
  37. <listitem>
  38. <para>
  39. <emphasis>Subject</emphasis> - String, optional, was das Dokument beschreibt.
  40. </para>
  41. </listitem>
  42. <listitem>
  43. <para>
  44. <emphasis>Keywords</emphasis> - String, optional, mit dem Dokument assoziierte Wörter.
  45. </para>
  46. </listitem>
  47. <listitem>
  48. <para>
  49. <emphasis>Creator</emphasis> - String, optional, wenn das Dokument von einem anderen
  50. Format zu PDF konvertiert wurde, der Name der Anwendung (zum Beispiel, Adobe FrameMaker®)
  51. die das originale Dokument erstellt hat von dem es konvertiert wurde.
  52. </para>
  53. </listitem>
  54. <listitem>
  55. <para>
  56. <emphasis>Producer</emphasis> - String, optional, wenn das Dokument von einem anderen
  57. Format zu PDF konvertiert wurde, der Name der Anwendung (zum Beispiel, Acrobat Distiller)
  58. die es zu PDF konvertiert hat.
  59. </para>
  60. </listitem>
  61. <listitem>
  62. <para>
  63. <emphasis>CreationDate</emphasis> - Wtring, optional, Datum und Zeit der Erstellung des
  64. Dokumentes in der folgenden Form "D:YYYYMMDDHHmmSSOHH'mm'" wobei:
  65. <itemizedlist>
  66. <listitem>
  67. <para>
  68. <emphasis>YYYY</emphasis> ist das Jahr.
  69. </para>
  70. </listitem>
  71. <listitem>
  72. <para>
  73. <emphasis>MM</emphasis> ist der Monat.
  74. </para>
  75. </listitem>
  76. <listitem>
  77. <para>
  78. <emphasis>DD</emphasis> ist der Tag (01–31).
  79. </para>
  80. </listitem>
  81. <listitem>
  82. <para>
  83. <emphasis>HH</emphasis> ist die Stunde (00–23).
  84. </para>
  85. </listitem>
  86. <listitem>
  87. <para>
  88. <emphasis>mm</emphasis>ist die Minute (00–59).
  89. </para>
  90. </listitem>
  91. <listitem>
  92. <para>
  93. <emphasis>SS</emphasis> ist die Sekunde (00–59).
  94. </para>
  95. </listitem>
  96. <listitem>
  97. <para>
  98. <emphasis>O</emphasis> ist die Relation der lokalen Zeit zur Univeral Zeit (UT),
  99. vorangestellt von einem der folgenden Zeichen +, -, oder Z (siehe anbei).
  100. </para>
  101. </listitem>
  102. <listitem>
  103. <para>
  104. <emphasis>HH</emphasis> gefolgt von ' ist der absolute Wert des Offsets von UT
  105. in Stunden (00–23).
  106. </para>
  107. </listitem>
  108. <listitem>
  109. <para>
  110. <emphasis>mm</emphasis> gefolgt von ' ist der absolute Wert des Offsets von
  111. UT in Minuten (00–59).
  112. </para>
  113. </listitem>
  114. </itemizedlist>
  115. Das Apostroph Zeichen (') nach HH und mm ist Teil der Syntax. Alle Felder nach dem Jahr sind
  116. optional. (Die Prefix D:, obwohl auch optional, wird dringend empfohlen.) Der Standardwert
  117. für MM und DD sind beide 01; alle anderen numerischen Felder sind standardmäßig 0. Ein
  118. Pluszeichen (+) als Wert des O Feldes bedeutet das die lokale Zeit später als UT ist, ein
  119. Minuszeiche das die lokale Zeit früher als UT ist, und das Zeichen Z das die lokale Zeit
  120. identisch mit UT ist. Wenn keine UT Information spezifiziert ist, wird die Relation der
  121. spezifizierten Zeit zu UT als unbekannt angenommen. Egal ob die Zeitzone bekannt ist oder
  122. nicht, sollte der Rest des Datums in lokaler Zeit spezifiziert werden.
  123. </para>
  124. <para>
  125. Zum Beispiel, 23. Dezember, 1998, um 19:52, U.S. Pazifik Standard Zeit, wird dargestellt
  126. durch den String "D:199812231952−08'00'".
  127. </para>
  128. </listitem>
  129. <listitem>
  130. <para>
  131. <emphasis>ModDate</emphasis> - String, optional, das Datum und die Uhrzeit an dem das Dokument
  132. zuletzt geändert wurde, im selben Format wie <emphasis>CreationDate</emphasis>.
  133. </para>
  134. </listitem>
  135. <listitem>
  136. <para>
  137. <emphasis>Trapped</emphasis> - bool, optional, zeigt ob das Dokument modifiziert wurde um
  138. eingeschlossene Informationen zu enthalten.
  139. <itemizedlist>
  140. <listitem>
  141. <para>
  142. <emphasis>true</emphasis> - Das Dokument wurde vollständig eingeschlossen;
  143. weiteres einschließen ist nicht notwendig.
  144. </para>
  145. </listitem>
  146. <listitem>
  147. <para>
  148. <emphasis>false</emphasis> - Das Dokument wurde bisher noch nicht eingeschlossen,
  149. wenn das Einschließen gewümscht wird muß es noch getan werden.
  150. </para>
  151. </listitem>
  152. <listitem>
  153. <para>
  154. <emphasis>null</emphasis> - Entweder ist nicht bekannt ob das Dokument
  155. eingeschlossen wurde, oder es wurde bisher erst teilweise aber noch nicht
  156. vollständig eingeschlosssen; etwas zusätzliches Einschließen ist trotzdem noch
  157. notwendig.
  158. </para>
  159. </listitem>
  160. </itemizedlist>
  161. </para>
  162. </listitem>
  163. </itemizedlist>
  164. </para>
  165. <para>
  166. Seit PDF v 1.6 können Metadaten in einem speziellen XML Dokument gespeichert werden das dem PDF
  167. angehängt wird (XMP - <ulink url="http://www.adobe.com/products/xmp/">Extensible Metadata Platform</ulink>).
  168. </para>
  169. <para>
  170. Dieses XML Dokument kann empfangen und dem PDF mit der <classname>Zend_Pdf::getMetadata()</classname> und der
  171. <classname>Zend_Pdf::setMetadata($metadata)</classname> Methode wieder hinzugefügt werden:
  172. <programlisting role="php"><![CDATA[
  173. $pdf = Zend_Pdf::load($pdfPath);
  174. $metadata = $pdf->getMetadata();
  175. $metadataDOM = new DOMDocument();
  176. $metadataDOM->loadXML($metadata);
  177. $xpath = new DOMXPath($metadataDOM);
  178. $pdfPreffixNamespaceURI = $xpath->query('/rdf:RDF/rdf:Description')
  179. ->item(0)
  180. ->lookupNamespaceURI('pdf');
  181. $xpath->registerNamespace('pdf', $pdfPreffixNamespaceURI);
  182. $titleNode = $xpath->query('/rdf:RDF/rdf:Description/pdf:Title')->item(0);
  183. $title = $titleNode->nodeValue;
  184. ...
  185. $titleNode->nodeValue = 'New title';
  186. $pdf->setMetadata($metadataDOM->saveXML());
  187. $pdf->save($pdfPath);
  188. ]]></programlisting>
  189. </para>
  190. <para>
  191. Übliche Eingenschaften von Dokumenten werden verdoppelt un din der Info Struktur und dem Metadaten
  192. Dokument (wenn vorhanden) gespeichert. Die anwendung des Benutzer ist dafür verantwortlich das
  193. beide Synchron gehalten werden.
  194. </para>
  195. </sect1>
  196. <!--
  197. vim:se ts=4 sw=4 et:
  198. -->