Programmer's Reference Guide
| ドキュメントのページ |
ドキュメントの情報およびメタデータ
PDF ドキュメントには、そのドキュメントに関する情報 (たとえばタイトルや作者、作成日、更新日など) を含めることができます。
歴史的に、この情報は特別な Info 構造体に格納されるようになっています。
この構造体を読み書きするには、Zend_Pdf オブジェクトの public プロパティ
properties の連想配列を使用します。
<?php
$pdf = Zend_Pdf::load($pdfPath);
echo $pdf->properties['Title'] . "\n";
echo $pdf->properties['Author'] . "\n";
$pdf->properties['Title'] = 'New Title.';
$pdf->save($pdfPath);
PDF v1.4 (Acrobat 5) の標準規格では、次のようなキーが定義されています。
-
Title - 文字列 (任意)。ドキュメントのタイトル。
-
Author - 文字列 (任意)。 ドキュメントの作成者。
-
Subject - 文字列 (任意)。 ドキュメントのサブタイトル。
-
Keywords - 文字列 (任意)。 ドキュメントに関連するキーワード。
-
Creator - 文字列 (任意)。 他の形式から PDF に変換されたドキュメントである場合に、 変換元のドキュメントを作成したアプリケーションの名前 (たとえば Adobe FrameMaker®) が格納されます。
-
Producer - 文字列 (任意)。 他の形式から PDF に変換されたドキュメントである場合に、 PDF への変換に使用したアプリケーションの名前 (たとえば Acrobat Distiller) が格納されます。
-
CreationDate - 文字列 (任意)。 ドキュメントの作成日時を "D:YYYYMMDDHHmmSSOHH'mm'" 形式で表したもの。
-
YYYY は年です。
-
MM は月です。
-
DD は日 (01–31) です。
-
HH は時 (00–23) です。
-
mm は分 (00–59) です。
-
SS は秒 (00–59) です。
-
O は地方時と標準時 (UT) との関連です。+, −, あるいは Z で表します (以下を参照ください)。
-
HH の後に ' を続けたものは、 UT との時差 (時) の絶対値 (00–23) です。
-
mm の後に ' を続けたものは、 UT との時差 (分) の絶対値 (00–59) です。
たとえば、太平洋標準時の 1998 年 12 月 23 日午後 7 時 52 分は、 "D:199812231952−08'00'" となります。
-
-
ModDate - 文字列 (任意)。 ドキュメントの最終更新日時。形式は CreationDate と同じ。
-
Trapped - boolean (任意)。 ドキュメントにトラッピング情報を含むよう修正されているかどうか。
-
true - ドキュメントは完全にトラッピングされています。 これ以上のトラッピングは不要です。
-
false - ドキュメントはまだトラッピングされていません。 必要なトラッピングを行わなければなりません。
-
null - ドキュメントがトラッピングされているかどうかが判別不可能、 あるいは一部だけトラッピングされている状態です。 さらなるトラッピングが必要かもしれません。
-
PDF v 1.6 以降では、メタデータを特別な XML 形式 (XMP - » Extensible Metadata Platform) で表して PDF に添付することができます。
この XML ドキュメントを PDF から取得したり PDF に添付したりするには、それぞれ
Zend_Pdf::getMetadata() メソッドおよび
Zend_Pdf::setMetadata($metadata) メソッドを使用します。
<?php
$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);
標準的なドキュメントのプロパティは、Info 構造体とメタデータドキュメント (存在する場合) の両方に重複して存在することになります。 これらをきちんと同期させるのは、アプリケーション側の責任となります。
| ドキュメントのページ |
