PDF 構文 メタデータ

PDF構文  [PDF Syntax ISO 32000-2]

PDF1.7は、ISO技術委員会によって2008年1月に“ISO 32000-1規格”として承認されました。2017年7月にはPDF2.0の規格ISO3200-2が承認され、2020年12月にはそれが第二稿に更新されました。
ここでは32000-2規格に基づいたPDF2.0の構文(構造)について説明しています。
PDFファイルは8-bitデータを単位として構成されていて一般の文書編集アプリケーションで開くことができその内容を読取ることができます。ただし、バイナリのデータもそのまま(表示可能な文字に変換されずに)格納されていますので文字化けしているように表示されますが、これはPDFの仕様です。
ここではそのデータの一部を読み解くことでPDF文書へのデータ追加などPDF再構成の意味を説明しPDF StructurePdftools 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文書のカタログ化や検索などに利用されます。
メタデータの変更は容易ですし、削除することもできます。

9.1 メタデータ(Metadata)ストリーム

メタデータはストリーム(Stream)に記載できます。このストリームを「メタデータ ストリーム」といいます。
ストリームを持ったオブジェクトですのでこのオブジェクトのタイプは「ディクショナリ」です。メタデータ ストリームは通常のストリーム ディクショナリに加えて以下のエントリが追加されます。

キー
タイプ
Type
name
(必須)"Metadata"を指定
Subtype
name
(必須)"XML"

オブジェクトのタイプは「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++
全体のソースコード

ご質問 ・ お問い合わせ

 メールで support@TrustSS.co.jp 宛てに、または 質問のページからお送りいただくようお願いします。
ご要望も受け付けております。


PDF Toolsライト・ライブラリ

PDF 構文解説

 

Pdftools SDK製品