<?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>Informação do Documento e Metadados</title>

    <para>
        Um documento <acronym>PDF</acronym> deve incluir informações gerais como o título do
        documento, autor, e datas de criação e modificação.
    </para>

    <para>
        Historicamente essas informações são armazenadas com o uso de estruturas especiais. Esta
        estrutura está disponível para leitura e escrita como uma matriz associativa usando a
        propriedade pública <property>properties</property> dos objetos
        <classname>Zend_Pdf</classname>:
    </para>

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

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

$pdf->properties['Title'] = 'Novo Título.';
$pdf->save($pdfPath);
]]></programlisting>

    <para>
        As seguintes chaves são definidas pelo padrão <acronym>PDF</acronym> v1.4 (Acrobat 5):

        <itemizedlist>
            <listitem>
                <para>
                    <emphasis>Title</emphasis> - string, opcional, o título do documento.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Author</emphasis> - string, opcional, o nome da pessoa que criou o
                    documento.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Subject</emphasis> - string, opcional, o assunto do documento.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Keywords</emphasis> - string, opcional, palavras-chave associadas ao
                    documento.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Creator</emphasis> - string, opcional, se o documento foi convertido
                    para <acronym>PDF</acronym> a partir de outro formato, o nome da aplicação (por
                    exemplo, Adobe FrameMaker®) que criou o documento original.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Producer</emphasis> - string, opcional, se o documento foi convertido
                    para <acronym>PDF</acronym> a partir de outro formato, o nome da aplicação (por
                    exemplo, Acrobat Distiller) que o converteu para <acronym>PDF</acronym>.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>CreationDate</emphasis> - string, opcional, a data e a hora na qual o
                    documento foi criado, na seguinte forma: "D:YYYYMMDDHHmmSSOHH'mm'", onde:

                    <itemizedlist>
                        <listitem>
                            <para>
                                <emphasis>YYYY</emphasis> é o ano.
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis>MM</emphasis> é o mês.
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis>DD</emphasis> é o dia (01–31).
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis>HH</emphasis> é a hora (00–23).
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis>mm</emphasis> é o minuto (00–59).
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis>SS</emphasis> é o segundo (00–59).
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis>O</emphasis> é a relação da hora local com a Hora
                                Universal (UT), denotada por um dos caracteres +, −, ou Z (veja
                                abaixo).
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis>HH</emphasis> seguido por ' é o valor absoluto da
                                diferença da Hora Universal em horas (00–23).
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis>mm</emphasis> seguido por ' é o valor absoluto da
                                diferença da Hora Universal em minutos (00–59).
                            </para>
                        </listitem>
                    </itemizedlist>

                    O apóstrofo (') depois do HH e do mm é parte da sintaxe. Todos os campos depois
                    do ano são opcionais. (O prefixo D:, embora também seja opcional, é fortemente
                    recomendado.) Os valores padrões para MM e DD são, para ambos, 01; todos os
                    outros campos numéricos têm valor padrão zero. Um sinal positivo (+) no valor de
                    um campo significa que a hora local é mais tarde que a Hora Universal, e um
                    sinal negativo (−) indica que é mais cedo, e a letra Z indica que a hora é igual
                    à Hora Universal. Se nenhuma informação sobre à Hora Universal for específicada,
                    a relação da hora com a Hora Universal é considerada desconhecida. Sendo ou não
                    conhecido o fuso horário, o resto da data deve ser especificado na hora local.
                </para>

                <para>
                    Por exemplo, 23 de Dezembro de 1998, 7:52 da noite, U.S. Pacific Standard Time,
                    é representado pela string "D:199812231952−08'00'".
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>ModDate</emphasis> - string, opcional, a data e a hora da atualização
                    mais recente no documento, na mesma forma de <emphasis>CreationDate</emphasis>.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Trapped</emphasis> - booleano, opcional, indica se o documento foi
                    modificado para a inclusão de informações "trapped".

                    <itemizedlist>
                        <listitem>
                            <para>
                                <emphasis><constant>TRUE</constant></emphasis> - The document has
                                been fully trapped; no further trapping is needed.
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis><constant>FALSE</constant></emphasis> - The document has
                                not yet been trapped; any desired trapping must still be done.
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                <emphasis><constant>NULL</constant></emphasis> - Either it is
                                unknown whether the document has been trapped or it has been partly
                                but not yet fully trapped; some additional trapping may still be
                                needed.
                            </para>
                        </listitem>
                    </itemizedlist>
                </para>
            </listitem>
        </itemizedlist>
    </para>

    <para>
        Desde a versão 1.6 do <acronym>PDF</acronym>, os metadados podem ser armazenados em um
        documento <acronym>XML</acronym> especial anexado ao <acronym>PDF</acronym> (XMP - <ulink
            url="http://www.adobe.com/products/xmp/">Extensible Metadata Platform</ulink>).
    </para>

    <para>
        Este documento <acronym>XML</acronym> pode ser recuperado e anexado ao PDF com os métodos
        <methodname>Zend_Pdf::getMetadata()</methodname> e
        <methodname>Zend_Pdf::setMetadata($metadata)</methodname>:
    </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 = 'Novo título';
$pdf->setMetadata($metadataDOM->saveXML());
$pdf->save($pdfPath);
]]></programlisting>

    <para>
        Propriedades comuns são duplicadas na estrutura Info e nos Metadados do documento (se
        presente). Agora é responsabilidade da aplicação do usuário mantê-los sincronizados.
    </para>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
