Zend_Pdf-Properties.xml 9.9 KB

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