Información del Documento y Metadatos.
Un documento PDF puede incluir información general como el título del documento, autor,
la creación y modificación de fechas.
Históricamente, esta información se almacena usando una estructura especial de
Información. Esta estructura está disponible para lectura y la escritura como una array
asociativo utilizando propiedades públicas properties de objetos
Zend_Pdf: properties['Title'] . "\n";
echo $pdf->properties['Author'] . "\n";
$pdf->properties['Title'] = 'New Title.';
$pdf->save($pdfPath);
]]>
Las siguientes claves están definidas por v1.4 PDF (Acrobat 5) estándar:
Title - string, opcional, el título del documento.
Author - string, opcional, el nombre de la persona que creó
el documento.
Subject - string, opcional, el tema del documento.
Keywords - string, opcional, las palabras clave asociadas
con el documento.
Creator - string, opcional, si el documento se convirtió
desde otro formato a PDF, el nombre de la aplicación (por ejemplo, Adobe
FrameMaker ®) que creó el documento original a partir del cual se convirtió.
Producer - string, opcional, si el documento se convirtió
desde otro formato a PDF, el nombre de la aplicación (por ejemplo, Acrobat
Distiller), que lo convirtió a PDF.
CreationDate - string, opcional, la fecha y la hora en que
el documento fue creado, en la forma siguiente: "D:YYYYMMDDHHmmSSOHH'mm'", en la
que:
YYYY es el año.
MM es el mes.
DD es el día (01–31).
HH es la hora (00–23).
mm es el minuto (00–59).
SS es el segundo (00–59).
O es la relación de la hora local a la hora
universal (UT), identificado por uno de los caracteres +, -, o Z
(véase más adelante).
HH seguido de ' es el valor absoluto de la
posición de la UT en horas (00-23).
mm seguido de ' es el valor absoluto de la
posición de la UT en minutos (00-59).
El carácter apóstrofe (') después de HH mm es parte de la
sintaxis. Todos los campos después del año son opcionales. (El prefijo D:,
aunque también opcional, se recomienda fuertemente.) Los valores por defecto
para MM y DD son 01, y todos los demás valores numéricos de los campos son cero
por defecto. Un signo más (+) como el valor del campo O significa que la hora
local es más tarde que la UT, un signo menos (-) que la hora local es anterior a
la UT, y la letra Z que la hora local es igual a la UT. Si no se especifica la
información UT, la relación del tiempo especificado para UT se considera
desconocida. Ya sea que la zona horaria se conozca o no, el resto de la fecha
debe estar especificada en la hora local.
Por ejemplo, el 23 de diciembre de 1998, a las 7:52 PM, hora estándar del
Pacífico de EE.UU., está representado por el string "D:199812231952-08'00'".
ModDate - string, opcional, la fecha y la hora en que el
documento fue modificado mas recientemente, de la misma forma que
CreationDate.
Trapped - booleano, opcional, indica si el documento ha
sido modificado para incluir la captura de información.
true - El documento ha sido capturado; no se
necesitan más capturas.
false - El documento aún no ha sido capturado;
cualquier captura todavía debe ser hecha.
null - O bien se desconoce si el documento ha
sido capturado o que lo ha sido en parte pero no completamente
capturado, y alguna captura adicional puede ser necesaria.
Desde PDF v 1.6 los metadatos se pueden almacenar en el documento XML
especial adjunto al PDF (XMP - Extensible
Metadata Platform).
Este documento XML se pueden recuperar y adjuntar al PDF con los
métodos Zend_Pdf::getMetadata() y
Zend_Pdf::setMetadata($metadata): 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);
]]>
Las propiedades comunes del documento se duplican en la estructura de Info y el documento
Metadata (si se presentan). Ahora es responsabilidad del usuario la aplicación para
mantenerlos sincronizados.