PDF 構文 メタデータ
PDF構文 [PDF Syntax ISO 32000-2]
ここでは32000-2規格に基づいたPDF2.0の構文(構造)について説明しています。
PDFファイルは8-bitデータを単位として構成されていて一般の文書編集アプリケーションで開くことができその内容を読取ることができます。ただし、バイナリのデータもそのまま(表示可能な文字に変換されずに)格納されていますので文字化けしているように表示されますが、これはPDFの仕様です。
ここではそのデータの一部を読み解くことでPDF文書へのデータ追加などPDF再構成の意味を説明しPDF StructureやPdftools SDKでのPDFデータ解析や編集をより詳細にできるようにします。
9. メタデータ (Metadata)
PDF文書の一般的な情報としてメタデータを格納できます。メタデータには例えば、タイトル、作成者、作成および変更の日時などが記載されます。
PDF文書に関するこのような情報はドキュメントメタデータと呼ばれ、オブジェクトレベルのメタデータでメタデータ(Metadata)ストリームとして格納されます。これはPDF2.0で推奨された方法です。
他に、このような情報を文書情報(Document Information) ディクショナリに格納する方法もありますが、CreationDateおよびModDateエントリを除いてPDF2.0では非推奨になりました。
PDF文書に関連した情報はカタログディクショナリのMetadeta要素にあります。
メタデータストリームがPDF1.4で使用開始されたとき、メタデータエントリを表すための豊富なメカニズムを提供するXMPが導入されました。
XMPはISO16684-1規格に準拠したXMLデータです。
PDF2.0ではメタデータを表す文法をISO16684-1規格に従うものと規定されました。
XMPを使用するとドキュメントのタイトルを複数の言語にすることも、ドキュメントの作成者をリストとして表すこともできます。
メタデータはPDF文書を補足する情報ですので、文書の表示には影響を与えません。
一般的にメタデータはPDF文書のカタログ化や検索などに利用されます。
メタデータの変更は容易ですし、削除することもできます。
| 「PDF Imger-LP」 | メタデータ抽出 | メタデータ抽出サンプルコード | ||||
|
||||||
9.1 メタデータ(Metadata)ストリーム
メタデータはストリーム(Stream)に記載できます。このストリームを「メタデータ ストリーム」といいます。
ストリームを持ったオブジェクトですのでこのオブジェクトのタイプは「ディクショナリ」です。メタデータ ストリームは通常のストリーム ディクショナリに加えて以下のエントリが追加されます。
オブジェクトのタイプは「2.5オブジェクト」を参照してください。
ドキュメントレベルのメタデータを表すメタデータストリームは、カタログディクショナリのMetadata要素を介してPDF文書に添付できます。
このメタデータストリームはXML(Extensible Markup Language)で表されるメタデータであり、文書情報辞書(Document Informationディクショナリ)にも記載できますが、「メタデータを表すXMLの文法はXMP(Extensible Metadata Platform)仕様(ISO 16684-1)に従って定義されるものとする」とPDF2.0でより明確に指定されました。XMPの要素は「8.3名前空間プロパティ」を参照してください。
以下は、メタデータの例です。
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
<dc:format>application/pdf</dc:format>
<dc:creator>
<rdf:Seq>
<rdf:li>作成者</rdf:li>
</rdf:Seq>
</dc:creator>
<dc:title>
<rdf:Alt>
<rdf:li xml:lang="x-default">文書タイトル</rdf:li>
</rdf:Alt>
</dc:title>
<dc:rights>
<rdf:Alt>
<rdf:li xml:lang="x-default">Copyright 2014-2026 株式会社トラスト・ソフトウェア・システム</rdf:li>
</rdf:Alt>
</dc:rights>
<xmpRights:WebStatement>https//www.trustss.co.jp/</xmpRights:WebStatement>
<xmpRights:Marked>False</xmpRights:Marked>
<xmp:CreateDate>2026-03-06T00:00:00+09:00</xmp:CreateDate>
<xmp:MetadataDate>2026-03-06T00:00:00+09:00</xmp:MetadataDate>
<xmp:ModifyDate>2026-03-06T00:00:00+09:00</xmp:ModifyDate>
<xmp:CreatorTool>PDF Structure Library (https://www.trustss.co.jp/)</xmp:CreatorTool>
<pdf:Producer>PDF Structure Library Ver 1.10.3 (https://www.trustss.co.jp/)</pdf:Producer>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
PDF Imager-LP(無償版)でHelloWorld.pdfの「メタデータ」を表示するソースコード
このPDFの内容はHelloWorld.txtです。
| C# | C/C++ |
HelloWorld.pdfのメタデータをXMPとしてImager-LPで解析すると、以下のようになります。
dc: http://purl.org/dc/elements/1.1/
dc:format = "application/pdf"
dc:creator [rdf:Seq]
[1] = ""
dc:title [rdf:Alt]
[1] = ""
pdf: http://ns.adobe.com/pdf/1.3/
pdf:Producer = "Acrobat Distiller 10.1.3 (Windows)"
xmp: http://ns.adobe.com/xap/1.0/
xmp:CreatorTool = "Word 用 Acrobat PDFMaker 10.1"
xmp:ModifyDate = "2026-03-06T11:38:22+09:00"
xmp:CreateDate = "2026-03-06T11:38:15+09:00"
xmp:MetadataDate = "2026-03-06T11:38:22+09:00"
xmpMM: http://ns.adobe.com/xap/1.0/mm/
xmpMM:DocumentID = "uuid:352e51c6-c5a1-4710-bfd6-92ecdfa8db59"
xmpMM:InstanceID = "uuid:0f64c2dd-f790-4217-9469-25b37bc83bf6"
HelloWorld.pdfを解析するPDF Imager-LP(無償版)のソースコード
| C# | C/C++ |