<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.pdf.info">
    <!-- @todo review and revise upon completion of refactoring -->
    <title>Dokument Informationen und Metadaten</title>

    <para>
        Ein <acronym>PDF</acronym> Dokument kann generelle Informationen wie den Titel, Author, und
        Erstellungs- sowie Modifikationsdatum enthalten.
    </para>

    <para>
        Historisch wird diese Information durch das Verwenden einer speziellen Info Struktur
        gespeichert. Diese struktur kann als assoziatives Array mithilfe der öffentlichen
        <property>properties</property> Eigenschaft des <classname>Zend_Pdf</classname> Objektes
        gelesen und geschrieben werden:
    </para>

    <programlisting language="php"><![CDATA[
$pdf = Zend_Pdf::load($pdfPath);

echo $pdf->properties['Title'] . "\n";
echo $pdf->properties['Author'] . "\n";

$pdf->properties['Title'] = 'Neuer Titel.';
$pdf->save($pdfPath);
]]></programlisting>

    <para>
        Die folgenden Schlüssel sind im <acronym>PDF</acronym> v1.4 (Acrobat 5) Standard definiert:

        <itemizedlist>
            <listitem>
                <para>
                    <emphasis>Title</emphasis> - String, optional, der Titel des Dokuments.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Author</emphasis> - String, optional, der Name der Person die das
                    Dokument erstellt hat.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Subject</emphasis> - String, optional, was das Dokument beschreibt.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Keywords</emphasis> - String, optional, mit dem Dokument assoziierte
                    Wörter.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Creator</emphasis> - String, optional, wenn das Dokument von einem
                    anderen Format zu <acronym>PDF</acronym> konvertiert wurde, der Name der
                    Anwendung (zum Beispiel, Adobe FrameMaker®) die das originale Dokument erstellt
                    hat von dem es konvertiert wurde.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Producer</emphasis> - String, optional, wenn das Dokument von einem
                    anderen Format zu <acronym>PDF</acronym> konvertiert wurde, der Name der
                    Anwendung (zum Beispiel, Acrobat Distiller) die es zu <acronym>PDF</acronym>
                    konvertiert hat.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>CreationDate</emphasis> - Wtring, optional, Datum und Zeit der
                    Erstellung des Dokumentes in der folgenden Form "D:YYYYMMDDHHmmSSOHH'mm'" wobei:

                    <itemizedlist>
                        <listitem><para><emphasis>YYYY</emphasis> ist das Jahr.</para></listitem>
                        <listitem><para><emphasis>MM</emphasis> ist der Monat.</para></listitem>
                        <listitem>
                            <para><emphasis>DD</emphasis> ist der Tag (01–31).</para>
                        </listitem>

                        <listitem>
                            <para><emphasis>HH</emphasis> ist die Stunde (00–23).</para>
                        </listitem>

                        <listitem>
                            <para><emphasis>mm</emphasis>ist die Minute (00–59).</para>
                        </listitem>

                        <listitem>
                            <para><emphasis>SS</emphasis> ist die Sekunde (00–59).</para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis>O</emphasis> ist die Relation der lokalen Zeit zur
                                Univeral Zeit (UT), vorangestellt von einem der folgenden Zeichen +,
                                -, oder Z (siehe anbei).
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis>HH</emphasis> gefolgt von ' ist der absolute Wert des
                                Offsets von UT in Stunden (00–23).
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis>mm</emphasis> gefolgt von ' ist der absolute Wert des
                                Offsets von UT in Minuten (00–59).
                            </para>
                        </listitem>
                    </itemizedlist>

                    Das Apostroph Zeichen (') nach HH und mm ist Teil der Syntax. Alle Felder nach
                    dem Jahr sind optional. (Die Prefix D:, obwohl auch optional, wird dringend
                    empfohlen.) Der Standardwert für MM und DD sind beide 01; alle anderen
                    numerischen Felder sind standardmäßig 0. Ein Pluszeichen (+) als Wert des O
                    Feldes bedeutet das die lokale Zeit später als UT ist, ein Minuszeiche das die
                    lokale Zeit früher als UT ist, und das Zeichen Z das die lokale Zeit identisch
                    mit UT ist. Wenn keine UT Information spezifiziert ist, wird die Relation der
                    spezifizierten Zeit zu UT als unbekannt angenommen. Egal ob die Zeitzone bekannt
                    ist oder nicht, sollte der Rest des Datums in lokaler Zeit spezifiziert werden.
                </para>

                <para>
                    Zum Beispiel, 23. Dezember, 1998, um 19:52, U.S. Pazifik Standard Zeit, wird
                    dargestellt durch den String "D:199812231952−08'00'".
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>ModDate</emphasis> - String, optional, das Datum und die Uhrzeit an
                    dem das Dokument zuletzt geändert wurde, im selben Format wie
                    <emphasis>CreationDate</emphasis>.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Trapped</emphasis> - bool, optional, zeigt ob das Dokument modifiziert
                    wurde um eingeschlossene Informationen zu enthalten.

                    <itemizedlist>
                        <listitem>
                            <para>
                                <emphasis><constant>TRUE</constant></emphasis> - Das Dokument wurde
                                vollständig eingeschlossen; weiteres einschließen ist nicht
                                notwendig.
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis><constant>FALSE</constant></emphasis> - Das Dokument wurde
                                bisher noch nicht eingeschlossen, wenn das Einschließen gewümscht
                                wird muß es noch getan werden.
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis><constant>NULL</constant></emphasis> - Entweder ist nicht
                                bekannt ob das Dokument eingeschlossen wurde, oder es wurde bisher
                                erst teilweise aber noch nicht vollständig eingeschlosssen; etwas
                                zusätzliches Einschließen ist trotzdem noch notwendig.
                            </para>
                        </listitem>
                    </itemizedlist>
                </para>
            </listitem>
        </itemizedlist>
    </para>

    <para>
        Seit <acronym>PDF</acronym> v 1.6 können Metadaten in einem speziellen
        <acronym>XML</acronym> Dokument gespeichert werden das dem <acronym>PDF</acronym> angehängt
        wird (XMP - <ulink
            url="http://www.adobe.com/products/xmp/">Extensible Metadata Platform</ulink>).
    </para>

    <para>
        Dieses <acronym>XML</acronym> Dokument kann empfangen und dem PDF mit der
        <methodname>Zend_Pdf::getMetadata()</methodname> und der
        <methodname>Zend_Pdf::setMetadata($metadata)</methodname> Methode wieder hinzugefügt werden:
    </para>

    <programlisting language="php"><![CDATA[
$pdf = Zend_Pdf::load($pdfPath);
$metadata = $pdf->getMetadata();
$metadataDOM = new DOMDocument();
$metadataDOM->loadXML($metadata);

$xpath = new DOMXPath($metadataDOM);
$pdfPreffixNamespaceURI = $xpath->query('/rdf:RDF/rdf:Description')
                                ->item(0)
                                ->lookupNamespaceURI('pdf');
$xpath->registerNamespace('pdf', $pdfPreffixNamespaceURI);

$titleNode = $xpath->query('/rdf:RDF/rdf:Description/pdf:Title')->item(0);
$title = $titleNode->nodeValue;
...

$titleNode->nodeValue = 'New title';
$pdf->setMetadata($metadataDOM->saveXML());
$pdf->save($pdfPath);
]]></programlisting>

    <para>
        Übliche Eingenschaften von Dokumenten werden verdoppelt un din der Info Struktur und dem
        Metadaten Dokument (wenn vorhanden) gespeichert. Die anwendung des Benutzer ist dafür
        verantwortlich das beide Synchron gehalten werden.
    </para>
</sect1>
