PDF Metadata メタデータ編集・読出 ライブラリ
PDF メタデータ編集・読出ライブラリ 概要
これとは別にPDF文書内の個々のオブジェクトにメタデータを含めることができます。このようなオブジェクト固有のメタデータは「オブジェクトレベルのメタデータ」と呼ばれます。
なお、文書メタデータに限りますが、これらの情報を文書に関連付けられた文書情報(Document Information)ディクショナリ内に格納することができます。
しかし、PDF2.0では(CreationDateとModDateのエントリを除いて)文書情報ディクショナリに記載することは非推奨となっていて、 文書メタデータはメタデータストリームに格納されます。
PDFメタデータ表示、XMPパケット
多くのPDFビュワー(表示アプリケーション)では以下のようなダイアログで文書メタデータを確認できます。
PDF Metadataはそれぞれの項目を指定して編集できます。

PDF文書にタイトルを指定した場合はそれをPDFビュワーのタイトルバーに表示することができます。

PDF文書に著作権表示を追加できます。

PDF Metadataライブラリは、このメタデータのタイトルや作成者などを編集するばかりではなく、XMP仕様で規定された種々(Simple、Structure、Array)のプロパティを言語の修飾子(Qulifire)と共に編集しそれらを読み出すことができます。
この機能を使うと、大量に格納されたPDF文書の中から目的の文書をいち早く検索するシステムを構築することなどができます。
また、AI(人工知能)を使ってPDF文書を解析し、その結果をメタデータに自動で記載させることができます。
以下はXMPパケット(メタデータ)の例です:PDF Metadataはこれらを編集します。
<?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-04-19T00:00:00+09:00</xmp:CreateDate> <xmp:MetadataDate>2026-04-19T00:00:00+09:00</xmp:MetadataDate> <xmp:ModifyDate>2026-04-19T00: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> <?xpacket end="w"?>
PDFメタデータ編集のサンプルコード
タイトルの編集
メタデータのdc:titleプロパティを編集するサンプルコードです。
PDF2.0では非推奨ですが、以前は文書タイトルを文書情報(Document Information)ディクショナリのTitle要素に記載していました。
PDF Metadataライブラリは互換性のためにDocument Informationディクショナリにも記載します。
これにより、メタデータの<dc:title>プロパティに以下のように記載されます。
<dc:title>
<rdf:Alt>
<rdf:li xml:lang="x-default">文書タイトル</rdf:li>
<rdf:li xml:lang="ja-JP">文書タイトル</rdf:li>
<rdf:li xml:lang="en-UK">Document Title</rdf:li>
</rdf:Alt>
</dc:title>
作成者の編集
メタデータのdc:creatorプロパティを編集するサンプルコードです。
PDF2.0では非推奨ですが、以前はPDF文書作成者を文書情報(Document Information)ディクショナリのAuthor要素に記載していました。
PDF Metadataライブラリは互換性のためにDocument Informationディクショナリにも記載します。
これにより、メタデータの<dc:creator>プロパティに以下のように記載されます。
<dc:creator>
<rdf:Seq>
<rdf:li>作成者</rdf:li>
</rdf:Seq>
</dc:creator>
サブタイトル(文書の説明)の編集
メタデータのdc:descriptionプロパティを編集するサンプルコードです。
PDF2.0では非推奨ですが、以前はサブタイトル(文書の説明)を文書情報(Document Information)ディクショナリのSubject要素に記載していました。
PDF Metadataライブラリは互換性のためにDocument Informationディクショナリにも記載します。
これにより、メタデータの<dc:description>プロパティに以下のように記載されます。
<dc:description>
<rdf:Alt>
<rdf:li xml:lang="x-default">説明</rdf:li>
<rdf:li xml:lang="ja-JP">説明</rdf:li>
<rdf:li xml:lang="en-UK">Description</rdf:li>
</rdf:Alt>
</dc:title>
キーワードの編集
メタデータのdc:subjectプロパティを編集するサンプルコードです。
PDF文書のキーワードはdc:subjectに記載されますので注意してください。dc:keywordsという項目はDublin Core名前空間にありません。連結されたキーワードがSimpleプロパティのpdf:Keywordsに記載されます。
PDF2.0では非推奨ですが、以前はキーワードを文書情報(Document Information)ディクショナリのKeywords要素に記載していました。
PDF Metadataライブラリはメタデータのpdf:Keywordsにも記載し、互換性のためにDocument Informationディクショナリにも記載します。
これにより、メタデータの<dc:subject>プロパティおよび、<pdf:Keywords>プロパティに以下のように記載されます。
<dc:subject>
<rdf:Bag>
<rdf:li>キーワード1</rdf:li>
<rdf:li>キーワード2</rdf:li>
</rdf:Bag>
</dc:subject>
<pdf:Keywords>キーワード1; キーワード2</pdf:Keywords>
著作権表示の編集
PDF Metadataライブラリは著作権表示をメタデータに記載し、「著作権取得済み」などのフラグを設定します。
これにより、メタデータの<dc:rigths>プロパティおよび、<xmpRights:WebStatement>プロパティに以下のように記載されます。
<dc:rights>
<rdf:Alt>
<rdf:li xml:lang="x-default">Copyright 2026 サンプル株式会社</rdf:li>
<rdf:li xml:lang="ja-JP">Copyright 2026 サンプル株式会社</rdf:li>
<rdf:li xml:lang="en">Copyright 2026 Sample Co.,Ltd.</rdf:li>
</rdf:Alt>
</dc:rights>
<xmpRights:WebStatement>https//www.sample.com/</xmpRights:WebStatement>
Simpleプロパティの編集
Simple(単純)プロパティの値は Unicode標準で定義されているUnicodeテキストの文字列です。
この値を持つXMPプロパティの要素コンテンツは値を提供するテキストでなければなりません。
これにより、メタデータの<xmp:Rating>プロパティに以下のように記載されます。
<xmp:Rating>3</xmp:Rating>
Structureプロパティの編集
Structure(構造)プロパティの値は0個以上の名前付きフィールドのコンテナです。構造内の各フィールドの順序は重要ではありません。
これにより、メタデータの<xmpTPg:MaxPageSize>プロパティに以下のように記載されます。 PDF Metadataではrdf:Description要素をrdf:parseType="Resource"属性に置き換えたStructureプロパティとします。
<xmpTPg:MaxPageSize rdf:parseType="Resource">
<stDim:h>297</stDim:h>
<stDim:w>210</stDim:w>
<stDim:unit>mm</stDim:unit>
</xmpTPg:MaxPageSize>
順序付(Orderd)Arrayプロパティの編集
Array(配列)プロパティの値は1から始まる序数で位置付けされた0個以上のアイテムのコンテナです。Arrayアイテムの形式は任意のXMP値形式にすることができ、配列内のすべてのアイテムは同じデータ型にします。
以下に順序付(Orderd)プロパティを編集するサンプルコードとプロパティ値を示します。
これにより、メタデータの<xmpTPg:MaxPageSize>プロパティに以下のように記載されます。
<dc:OrderedSubject>
<rdf:Seq>
<rdf:li>XMP</rdf:li>
<rdf:li>metadata</rdf:li>
<rdf:li>PDF Metadata</rdf:li>
</rdf:Seq>
</dc:OrderedSubject>
順序無し(Unorderd)Arrayプロパティの編集
Array(配列)プロパティの値は順序に意味のない0個以上のアイテムのコンテナです。Arrayアイテムの形式は任意のXMP値形式にすることができ、配列内のすべてのアイテムは同じデータ型にします。
以下に順序無し(Unorderd)プロパティを編集するサンプルコードとプロパティ値を示します。
これにより、メタデータの<xmpTPg:MaxPageSize>プロパティに以下のように記載されます。
<dc:UnorderedSubject>
<rdf:Bag>
<rdf:li>XMP</rdf:li>
<rdf:li>metadata</rdf:li>
<rdf:li>PDF Metadata</rdf:li>
</rdf:Bag>
</dc:UnorderedSubject>
代替(Alternative)Arrayプロパティの編集
Array(配列)プロパティの値は順序付けられていて恣意的に順序を変更できない0個以上のアイテムのコンテナです。最初の項目には優先されるべき(既定の)項目ですので、他の基準が適用されない場合に選択されます。
以下に代替(Alternative)プロパティを編集するサンプルコードとプロパティ値を示します。
これにより、メタデータの<dc:AlternativeSubject>プロパティに以下のように記載されます。
xml:lang="x-default"の項目は自動的に作成されます。
<dc:AlternativeSubject>
<rdf:Alt>
<rdf:li xml:lang="x-default">サブジェクト</rdf:li>
<rdf:li xml:lang="ja-JP">サブジェクト</rdf:li>
<rdf:li xml:lang="en-US">Subject</rdf:li>
</rdf:Alt>
</dc:AlternativeSubject>
AIとの連携
自動で作成されたメタデータで文書の検索が容易になりますし、文書目録などを自動生成することなどもできます。
PDF文書のキーワードを自動で生成
OpenAIでは.NET10で使えるAPIライブラリが公開されています。
このライブラリをWindows Visual Studioで利用するためには、NuGetパッケージのOpenAI APIライブラリを先にインストールしてください。
OpenAI APIはGPT-5のResponsesを使用できますが、.NETのライブラリでは実験的なAPI(Experimental APIs)となっていますので、ここでは従来のComplationを使ったChatサンプルを掲載しています。
以下のサンプルはOpenAIでPDF文書からキーワードを作成し、メタデータに記載した新たなPDFファイルを作成します。
これにより、作成されたPDFのメタデータの<dc:subject>プロパティおよび、<pdf:Keywords>プロパティに以下のように自動で記載されます。
<dc:subject>
<rdf:Bag>
<rdf:li>AIによって作成されたキーワード1</rdf:li>
<rdf:li>AIによって作成されたキーワード2</rdf:li>
<rdf:li>AIによって作成されたキーワード3</rdf:li>
<rdf:li>AIによって作成されたキーワード4</rdf:li>
<rdf:li>AIによって作成されたキーワード5</rdf:li>
</rdf:Bag>
</dc:subject>
<pdf:Keywords>AIによって作成されたキーワード1, AIによって作成されたキーワード2, AIによって作成されたキーワード3, AIによって作成されたキーワード4, AIによって作成されたキーワード5</pdf:Keywords>