PDF Imager-LP PDF文書メタデータをXMP解析
PDF Imager-LP PDFのメタデータをXMP解析・変更するサンプル
PDF Imager-LPは、PDF文書を画像(TIFF、JPEG、PNG、BMP)に変換するライブラリです。( PDF Imager-LP概要 )
価格見積り
ここでは、PDFメタデータをXMP(Extensible Metadata Platform)として解析・変更するサンプルを示します。
ダウンロード:
PDF Imager-LPの無償体験版は、以下からダウンロードできます。無償体験版は、製品版と同じ機能が使えます。
利用許諾契約書をご確認のうえダウンロードしてください。ダウンロードしますと、利用許諾に同意したものとみなします。
評価利用では、ライセンスキーが必要です。
インストール
| C# 開発環境 | C/C++ 開発環境 | Python 開発環境 |
ライブラリは無償でダウンロードでき、全機能を試用できます。
Imager-LPパッケージをダウンロードしてから、適当なフォルダーに解凍してください。
以下のようなフォルダーができますので適宜ご利用ください。
Imager-LPパッケージをダウンロードしてから、適当なフォルダーに解凍してください。
以下のようなフォルダーができますので適宜ご利用ください。
| doc | ライブラリ説明書、利用許諾契約書 |
| include | C/C++用ヘッダー(.h)ファイル |
| lib | DLLライブラリ、Libファイル |
| sample | C/C++言語、C#/VB.NET言語 および、 Windowsアプリケーション(C++およびC#) |
サンプルはlib/PdfImagerLPNET.dllおよびlib/x64/PdfImagerLP.dll(またはlib/Win32/PdfImagerLP.dll)を参照しますので、適切なフォルダーにコピーしてください。
サンプルはlib/x64/PdfImagerLP.dll(またはlib/Win32/PdfImagerLP.dll)を参照しますので、適切なフォルダーにコピーしてください。
サンプルはPdfImagerLP.pyを使用し、lib/[x64またはWin32]/_PdfImagerLP.pydおよびlib/[x64またはWin32]/PdfImagerLP.dllを参照しますので、適切なフォルダーにコピーするか、以下のような手順でPython DLLの検索パスを設定してください。
import sys
if sys.maxsize > 2**32:
sys.path.insert(1,'[Imager-LPインストールフォルダー名]/lib/x64')
else:
sys.path.insert(1,'[Imager-LPインストールフォルダー名]/lib/Win32')
メタデータをXMPとして解析するサンプルコード
PDF文書からメタデータをXMPとしてダンプ出力するサンプルコードです。
| C# | C/C++ | Python | 他のサンプル | ダウンロード |
#include "ImagerLP.h"
#pragma comment(lib, "PdfImagerLP.lib")
int main()
{
//初期化
if (0 > MlpInitialize("0-0G09-43RG04GW9120")) {
printf("ライセンスキーが不正です\n");
exit(100);
}
//オープン
if (0 > MlpOpenDoc("input.pdf", "", ""))
printf("オープンエラー\n");
else {
//XMPインターフェース
XMP_TK_HANDLE h = MlpGetXmpInterface();
//XMP解析結果をダンプ出力
XmpDumpObjectToConsole(h);
//クローズ
XmpCloseInterface(h);
MlpCloseDoc();
}
//終了
MlpUninitialize();
}
| MlpInitialize | 初期化 引数にライセンスキーを指定します。 |
| MlpOpenDoc | PDF文書をオープン 第一引数:ファイルパス名 第二引数:オーナーパスワード 第三引数:ユーザーパスワード |
| MlpGetXmpInterface | XMPインターフェースを取得 ハンドルが戻ります。 |
| XmpDumpObjectToConsole | XMP解析の結果をコンソールに出力 第一引数:インターフェースハンドル |
| XmpCloseInterface | XMPインターフェースをクローズ |
| MlpCloseDoc | PDF文書をクローズ |
| MlpUninitialize | ライブラリの終了 |
| C# | C/C++ | Python | 他のサンプル | ダウンロード |
using System;
using PDFTools.PdfImagerLP;
namespace XmpDumpCsp
{
class XmpDump
{
static void Main(string[] args)
{
// インスタンス生成
using (var mlp = new PdfImager("0-0G09-43RG04GW9120"))
{
// オープン
if (0 > mlp.OpenDoc("input.pdf"))
{
Console.WriteLine("オープンエラー");
mlp.Uninitialize();
return;
}
else
{
// Xmpインターフェース
XmpInterface xmp = mlp.GetXmpInterface();
// ダンプ出力
xmp.DumpObjectToConsole();
// クローズ
xmp.CloseInterface();
mlp.CloseDoc();
}
//終了
mlp.Uninitialize();
}
}
}
}
| Initialize | 初期化 引数にライセンスキーを指定します。 |
| OpenDoc | PDF文書をオープン 第一引数:ファイルパス名 第二引数:オーナーパスワード(省略可) 第三引数:ユーザーパスワード(省略可) |
| GetXmpInterface | XMPインターフェースを取得 |
| GetMetadat | XMPメタデータを出力 |
| CloseInterface | インターフェースクローズ |
| CloseDoc | PDF文書をクローズ |
| Uninitialize | ライブラリの終了 |
| C# | C/C++ | Python | 他のサンプル | ダウンロード |
from PdfImagerLP import Mlp
#インスタンス生成
mlp = Mlp();
#初期化
if mlp.Initialize("0-0G09-43RG04GW9120") < 0:
print("ライセンスキーが不正です。");
exit()
#オープン
if mlp.OpenDoc("in.pdf") < 0:
print("PDFファイルを開けません。")
else:
# XMPインターフェース
xmp = mlp.GetXmpInterface()
# XMP出力
xmp.DumpObjectToConsole()
#クローズ
xmp.CloseInterface()
mlp.CloseDoc()
# 後始末
mlp.Uninitialize();
| Initialize | 初期化 引数にライセンスキーを指定します。 |
| OpenDoc | PDF文書をオープン 第一引数:ファイルパス名 第二引数:オーナーパスワード(省略可) 第三引数:ユーザーパスワード(省略可) |
| GetXmpInterface | XMPインターフェースを取得 |
| DumpObjectToConsole | XMPメタデータを出力 |
| CloseInterface | XMPインターフェースをクローズ |
| CloseDoc | PDF文書をクローズ |
| Uninitialize | ライブラリの終了 |
以下は、上記コードで抽出されるXMPメタデータの例です。
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 = "2025-12-09T11:38:22+09:00"
xmp:CreateDate = "2025-12-09T11:38:15+09:00"
xmp:MetadataDate = "2025-12-09T11: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"
メタデータのSimpleプロパティを検索・変更するサンプルコード
PDF文書のメタデータであるSimpleプロパティを検索・変更するサンプルコードです。
| C# | C/C++ | Python | 他のサンプル | ダウンロード |
#include "ImagerLp.h"
#pragma comment(lib, "PdfImagerLP.lib")
int main()
{
// 初期化
if(MlpInitialize("0-0G09-43RG04GW9120")){
printf("ライセンスキーが不正です。正しいライセンスキーを使用してください。");
return 1;
}
// PDF文書オープン
if(MlpOpenDoc("ファイル.pdf", NULL, NULL)){
printf("PDFファイルをオープンできません。");
return 2;
}
// XMPインターフェース
XMP_TK_HANDLE h = MlpGetXmpInterface();
// Simpleプロパティ
if (!XmpDoesSimplePropertyExist(h, "http://ns.adobe.com/xap/1.0/", "CreateDate")) {
printf("プロパティはありません\n");
}
else {
time_t t;
struct tm tm;
// Simpleプロパティ値取得
XmpGetPropertyDate(h, "http://ns.adobe.com/xap/1.0/", "CreateDate", &t);
localtime_s(&tm, &t);
printf("%d-%d-%d %d:%d:%d\n", tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
}
// Simpleプロパティ変更(または追加)
if (!XmpSetSimplePropertyCurrentDate(h, "http://ns.adobe.com/xap/1.0/", "ABCD")) {
// メタデータを更新
XmpUpdateDocument(h);
// 更新されたPDF文書を格納
XmpDocumentToFile(h, "out.pdf");
}
// クローズ
XmpCloseInterface(h);
MlpCloseDoc();
// 後始末
MlpUninitialize();
return 0;
}
| MlpInitialize | 初期化 引数にライセンスキーを指定します。 |
| MlpOpenDoc | PDF文書をオープン 第一引数:ファイルパス名 第二引数:オーナーパスワード 第三引数:ユーザーパスワード |
| MlpGetXmpInterface | XMPインターフェースを取得 ハンドルが戻ります。 |
| XmpDoesSimplePropertyExist | Simpleプロパティの有無を確認 第一引数:ハンドル 第二引数:プロパティの名前空間URL 第三引数:プロパティ名 |
| XmpGetSimplePropertyDate | プロパティに指定された日時を取得 第一引数:ハンドル 第二引数:プロパティの名前空間URL 第三引数:プロパティ名 第四引数:日時データ |
| XmpSetSimplePropertyCurrentDate | プロパティを現在日時に変更、もしくは現在日時のプロパティを追加 第一引数:ハンドル 第二引数:プロパティの名前空間URL 第三引数:プロパティ名 |
| XmpUpdateDocument | PDF文書のメタデータを更新 XMPインターフェース |
| XmpDocumentToFile | 更新されたPDF文書を出力 第一引数:ハンドル 第二引数:出力ファイルパス |
| XmpCloseInterface | XMPインターフェースをクローズ |
| MlpCloseDoc | PDF文書をクローズ |
| MlpUninitialize | ライブラリの終了 |
| C# | C/C++ | Python | 他のサンプル | ダウンロード |
using System;
using PDFTools.PdfImagerLP;
namespace XmpSimpleCsp
{
class XmpSimple
{
static void Main()
{
// インスタンス生成
using (var mlp = new PdfImager("0-0G09-43RG04GW9120"))
{
// オープン
if (0 > mlp.OpenDoc("in.pdf"))
{
Console.WriteLine("オープンエラー");
mlp.Uninitialize();
return;
}
// Xmpインターフェース
XmpInterface xmp = mlp.GetXmpInterface();
// Simpleプロパティ値取得
if (xmp.DoesSimplePropertyExist("http://ns.adobe.com/xap/1.0/", "CreateDate") < 1)
{
Console.WriteLine("プロパティがありません");
}
else
{
DateTime dt = xmp.GetPropertyDate("http://ns.adobe.com/xap/1.0/", "CreateDate");
Console.WriteLine(dt);
}
// Simpleプロパティ変更(追加)
if (xmp.SetSimplePropertyCurrentDate("http://ns.adobe.com/xap/1.0/", "ABCD") == 0)
{
// PDF文書更新
xmp.UpdateDocument();
// PDF出力
mlp.DocumentToFile("out.pdf");
}
//クローズ
xmp.CloseInterface();
mlp.CloseDoc();
mlp.Uninitialize();
}
}
}
}
| Initialize | 初期化 引数にライセンスキーを指定します。 |
| OpenDoc | PDF文書をオープン 第一引数:ファイルパス名 第二引数:オーナーパスワード 第三引数:ユーザーパスワード |
| GetXmpInterface | XMPインターフェースを取得 |
| DoesSimplePropertyExist | Simpleプロパティの有無を確認 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 |
| GetSimplePropertyDate | プロパティに指定された日時を取得 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 |
| SetSimplePropertyCurrentDate | プロパティを現在日時に変更、もしくは現在日時のプロパティを追加 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 |
| UpdateDocument | PDF文書のメタデータを更新 XMPインターフェース |
| DocumentToFile | 更新されたPDF文書を出力 引数:出力ファイルパス |
| CloseInterface | XMPインターフェースをクローズ |
| CloseDoc | PDF文書をクローズ |
| Uninitialize | ライブラリの終了 |
| C# | C/C++ | Python | 他のサンプル | ダウンロード |
from PdfImagerLP import Mlp
#インスタンス生成
mlp = Mlp();
#初期化
if mlp.Initialize("0-0G09-43RG04GW9120") < 0:
print("ライセンスキーが不正です。");
exit()
#オープン
if mlp.OpenDoc("in.pdf") < 0:
print("PDFファイルを開けません。")
else:
#Simpleプロパティ値取得
xmp = mlp.GetXmpInterface()
if 0 >= xmp.DoesSimplePropertyExist("http://ns.adobe.com/xap/1.0/", "CreateDate"):
print('プロパティはありません')
else:
print(xmp.GetPropertyDate("http://ns.adobe.com/xap/1.0/", "CreateDate"))
#Simpleプロパティ変更(追加)
if 0 == xmp.SetSimplePropertyCurrentDate("http://ns.adobe.com/xap/1.0/", "ABCD"):
#PDF文書更新
xmp.UpdateDocument()
#更新された文書を出力
mlp.DocumentToFile("out.pdf")
# クローズ
xmp.CloseInterface()
mlp.CloseDoc();
# 後始末
mlp.Uninitialize();
| Initialize | 初期化 引数にライセンスキーを指定します。 |
| OpenDoc | PDF文書をオープン 第一引数:ファイルパス名 第二引数:オーナーパスワード 第三引数:ユーザーパスワード |
| GetXmpInterface | XMPインターフェースを取得 |
| DoesSimplePropertyExist | Simpleプロパティの有無を確認 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 |
| GetSimplePropertyDate | プロパティに指定された日時を取得 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 |
| SetSimplePropertyCurrentDate | プロパティを現在日時に変更、もしくは現在日時のプロパティを追加 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 |
| UpdateDocument | PDF文書のメタデータを更新 XMPインターフェース |
| DocumentToFile | 更新されたPDF文書を出力 引数:出力ファイルパス |
| CloseDoc | PDF文書をクローズ |
| Uninitialize | ライブラリの終了 |
以下は、上記コードで変更されたメタデータの例です。
<xmp:CreateDate>2025-12-09T11:38:15+09:00</xmp:CreateDate> <xmp:ABCD>2025-12-09T11:37:02+09:00</xmp:ABCD>
メタデータのarrayプロパティを検索・変更するサンプルコード
PDF文書のメタデータであるArrayプロパティを検索・変更するサンプルコードです。
| C# | C/C++ | Python | 他のサンプル | ダウンロード |
#include "ImagerLp.h"
#pragma comment(lib, "PdfImagerLP.lib")
int main()
{
// 初期化
if(MlpInitialize("0-0G09-43RG04GW9120")){
printf("ライセンスキーが不正です。正しいライセンスキーを使用してください。");
return 1;
}
// PDF文書オープン
if(MlpOpenDoc("ファイル.pdf", NULL, NULL)){
printf("PDFファイルをオープンできません。");
return 2;
}
// XMPインターフェース
XMP_TK_HANDLE h = MlpGetXmpInterface();
// Arrayプロパティ
if (!XmpDoesArrayPropertyExist(h, "http://purl.org/dc/elements/1.1/", "subject")) {
printf("プロパティはありません\n");
}
else {
//項目
if (XmpDoesArrayItemExist(h, "http://purl.org/dc/elements/1.1/", "subject", 1)) {
// Arrayプロパティ値取得
char *data;
XmpGetArrayItem(h, "http://purl.org/dc/elements/1.1/", "subject", 1, &data);
printf("Array(subject)[1]=%s\n", data);
}
// Arrayプロパティ変更(または追加)
if (!XmpSetArrayItem(h, "http://purl.org/dc/elements/1.1/", "subject", 1, "ABCD")) {
// メタデータを更新
XmpUpdateDocument(h);
// 更新されたPDF文書を格納
XmpDocumentToFile(h, "out.pdf");
}
// クローズ
XmpCloseInterface(h);
MlpCloseDoc();
// 後始末
MlpUninitialize();
return 0;
}
| MlpInitialize | 初期化 引数にライセンスキーを指定します。 |
| MlpOpenDoc | PDF文書をオープン 第一引数:ファイルパス名 第二引数:オーナーパスワード 第三引数:ユーザーパスワード |
| MlpGetXmpInterface | XMPインターフェースを取得 ハンドルが戻ります。 |
| XmpDoesArrayPropertyExist | Arrayプロパティ項目の有無を確認 第一引数:ハンドル 第二引数:プロパティの名前空間URL 第三引数:プロパティ名 第四引数:項目番号 |
| XmpGetArrayItem | プロパティの項目データを取得 第一引数:ハンドル 第二引数:プロパティの名前空間URL 第三引数:プロパティ名 第四引数:項目番号 第五引数:データの格納アドレス |
| XmpSetArrayItem | Arrayプロパティを変更、もしくは追加 第一引数:ハンドル 第二引数:プロパティの名前空間URL 第三引数:プロパティ名 第四引数:項目番号 第五引数:格納するデータ |
| XmpUpdateDocument | PDF文書のメタデータを更新 XMPインターフェース |
| XmpDocumentToFile | 更新されたPDF文書を出力 第一引数:ハンドル 第二引数:出力ファイルパス |
| XmpCloseInterface | XMPインターフェースをクローズ |
| MlpCloseDoc | PDF文書をクローズ |
| MlpUninitialize | ライブラリの終了 |
| C# | C/C++ | Python | 他のサンプル | ダウンロード |
using System;
using PDFTools.PdfImagerLP;
namespace XmpArrayCsp
{
class XmpArray
{
static void Main()
{
// インスタンス生成
using (var mlp = new PdfImager("0-0G09-43RG04GW9120"))
{
// オープン
if (0 > mlp.OpenDoc("in.pdf"))
{
Console.WriteLine("オープンエラー");
mlp.Uninitialize();
return;
}
// Xmpインターフェース
XmpInterface xmp = mlp.GetXmpInterface();
// Arrayプロパティ の有無
if (xmp.DoesArrayPropertyExist("http://purl.org/dc/elements/1.1/", "subject") < 1)
{
Console.WriteLine("Has not Propert");
}
else
{
// Array項目取得
Console.WriteLine(xmp.GetArrayItem("http://purl.org/dc/elements/1.1/", "subject", 1));
// Array項目の変更(追加)
xmp.SetArrayItem("http://purl.org/dc/elements/1.1/", "subject", 1, "ABCD");
// PDF文書更新
xmp.UpdateDocument();
// PDF出力
mlp.DocumentToFile("out.pdf");
}
// クローズ
xmp.CloseInterface();
mlp.CloseDoc();
mlp.Uninitialize();
}
}
}
}
| Initialize | 初期化 引数にライセンスキーを指定します。 |
| OpenDoc | PDF文書をオープン 第一引数:ファイルパス名 第二引数:オーナーパスワード 第三引数:ユーザーパスワード |
| GetXmpInterface | XMPインターフェースを取得 |
| DoesArrayPropertyExist | Arrayプロパティ項目の有無を確認 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 第三引数:項目番号 |
| GetArrayItem | プロパティの項目データを取得 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 第三引数:項目番号 |
| SetArrayItem | Arrayプロパティを変更、もしくは追加 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 第三引数:項目番号 第四引数:格納するデータ |
| UpdateDocument | PDF文書のメタデータを更新 XMPインターフェース |
| DocumentToFile | 更新されたPDF文書を出力 引数:出力ファイルパス |
| CloseInterface | XMPインターフェースをクローズ |
| CloseDoc | PDF文書をクローズ |
| Uninitialize | ライブラリの終了 |
| C# | C/C++ | Python | 他のサンプル | ダウンロード |
from PdfImagerLP import Mlp
#インスタンス生成
mlp = Mlp();
#初期化
if mlp.Initialize("0-0G09-43RG04GW9120") < 0:
print("ライセンスキーが不正です。");
exit()
#オープン
if mlp.OpenDoc("in.pdf") < 0:
print("PDFファイルを開けません。")
else:
#Arrayプロパティ取得
xmp = mlp.GetXmpInterface()
if 0 >= xmp.DoesArrayPropertyExist("http://purl.org/dc/elements/1.1/", "subject"):
print('プロパティがない')
else:
print(xmp.GetArrayItem("http://purl.org/dc/elements/1.1/", "subject", 1))
#変更(追加)
xmp.SetArrayItem("http://purl.org/dc/elements/1.1/", "subject", 1, "ABCD")
# PDF文書のメタデータを更新
xmp.UpdateDocument()
# PDF文書を格納
mlp.DocumentToFile("out.pdf")
# クローズ
xmp.CloseInterface()
mlp.CloseDoc();
# 後始末
mlp.Uninitialize();
| Initialize | 初期化 引数にライセンスキーを指定します。 |
| OpenDoc | PDF文書をオープン 第一引数:ファイルパス名 第二引数:オーナーパスワード 第三引数:ユーザーパスワード |
| GetXmpInterface | XMPインターフェースを取得 |
| DoesArrayPropertyExist | Arrayプロパティ項目の有無を確認 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 第三引数:項目番号 |
| GetArrayItem | プロパティの項目データを取得 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 第三引数:項目番号 |
| SetArrayItem | Arrayプロパティを変更、もしくは追加 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 第三引数:項目番号 第四引数:格納するデータ |
| UpdateDocument | PDF文書のメタデータを更新 XMPインターフェース |
| DocumentToFile | 更新されたPDF文書を出力 引数:出力ファイルパス |
| CloseDoc | PDF文書をクローズ |
| Uninitialize | ライブラリの終了 |
以下は、上記コードで検索・変更されたArrayメタデータの例です。
<dc:subject>
<rdf:Bag>
<rdf:li>ABCD</rdf:li>
<rdf:li>metadata</rdf:li>
<rdf:li>ISO Standard</rdf:li>
</rdf:Bag>
</dc:subject>
メタデータのstructプロパティを検索・変更するサンプルコード
PDF文書のメタデータであるStructureプロパティを検索・変更するサンプルコードです。
| C# | C/C++ | Python | 他のサンプル | ダウンロード |
#include "ImagerLp.h"
#pragma comment(lib, "PdfImagerLP.lib")
int main()
{
// 初期化
if(MlpInitialize("0-0G09-43RG04GW9120")){
printf("ライセンスキーが不正です。正しいライセンスキーを使用してください。");
return 1;
}
// PDF文書オープン
if(MlpOpenDoc("ファイル.pdf", NULL, NULL)){
printf("PDFファイルをオープンできません。");
return 2;
}
// XMPインターフェース
XMP_TK_HANDLE h = MlpGetXmpInterface();
// Structureプロパティ
if (!XmpDoesStructPropertyExist(h, "http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize")) {
printf("Has not Property\n");
}
else {
// フィールド
if (XmpDoesStructFieldExist(h, "http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize", "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "h")) {
// 取得
char *data;
XmpGetStructField(h, "http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize", "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "h", &data);
printf("Struct(MaxPageSize:h)=%s\n", data);
// 変更(追加)
XmpSetStructField(h, "http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize", "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "h", "300");
XmpSetStructField(h, "http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize", "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "hMax", "1000");
// メタデータを更新
XmpUpdateDocument(h);
// 変更されたPDF文書を格納
MlpDocumentToFile(h, "out.pdf");
}
}
// クローズ
XmpCloseInterface(h);
MlpCloseDoc();
// 後始末
MlpUninitialize();
return 0;
}
| MlpInitialize | 初期化 引数にライセンスキーを指定します。 |
| MlpOpenDoc | PDF文書をオープン 第一引数:ファイルパス名 第二引数:オーナーパスワード 第三引数:ユーザーパスワード |
| MlpGetXmpInterface | XMPインターフェースを取得 ハンドルが戻ります。 |
| XmpDoesStructPropertyExist | structプロパティの有無を確認 第一引数:ハンドル 第二引数:プロパティの名前空間URL 第三引数:プロパティ名 第四引数:フィールドの名前空間URL 第五引数:フィールド名 |
| XmpGetStructField | プロパティのフィールド値を取得 第一引数:ハンドル 第二引数:プロパティの名前空間URL 第三引数:プロパティ名 第四引数:フィールドの名前空間URL 第五引数:フィールド名 第六引数:取得データアドレス |
| XmpSetStructPropertyCurrentDate | プロパティを現在日時に変更、もしくは現在日時のプロパティを追加 第一引数:ハンドル 第二引数:プロパティの名前空間URL 第三引数:プロパティ名 第四引数:フィールドの名前空間URL 第五引数:フィールド名 第六引数:格納データ |
| XmpUpdateDocument | PDF文書のメタデータを更新 XMPインターフェース |
| MlpDocumentToFile | 更新されたPDF文書を出力 第一引数:ハンドル 第二引数:出力ファイルパス |
| XmpCloseInterface | XMPインターフェースをクローズ |
| MlpCloseDoc | PDF文書をクローズ |
| MlpUninitialize | ライブラリの終了 |
| C# | C/C++ | Python | 他のサンプル | ダウンロード |
using System;
using PDFTools.PdfImagerLP;
namespace XmpstructCsp
{
class Xmpstruct
{
static void Main()
{
// インスタンス生成
using (var mlp = new PdfImager("0-0G09-43RG04GW9120"))
{
// オープン
if (0 > mlp.OpenDoc("in.pdf"))
{
Console.WriteLine("オープンエラー");
mlp.Uninitialize();
return;
}
// Xmpインターフェース
XmpInterface xmp = mlp.GetXmpInterface();
//Structureプロパティ
if (xmp.DoesStructPropertyExist("http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize") < 1)
{
Console.WriteLine("プロパティはありません");
}
else
{
// フィールド
if (xmp.DoesStructFieldExist("http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize", "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "h") > 0)
{
// フィールド値取得
string data = xmp.GetStructField("http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize", "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "h");
Console.WriteLine($"Struct(MaxPageSize:h)={data}");
// フィールド値変更(追加)
xmp.SetStructField("http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize", "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "h", "300");
xmp.SetStructField("http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize", "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "hMax", "1000");
// PDF文書更新
xmp.UpdateDocument();
// 更新されたPDF文書を出力
mlp.DocumentToFile("out.pdf");
}
}
//クローズ
xmp.CloseInterface();
mlp.CloseDoc();
mlp.Uninitialize();
}
}
}
}
| Initialize | 初期化 引数にライセンスキーを指定します。 |
| OpenDoc | PDF文書をオープン 第一引数:ファイルパス名 第二引数:オーナーパスワード 第三引数:ユーザーパスワード |
| GetXmpInterface | XMPインターフェースを取得 |
| DoesStructPropertyExist | structプロパティの有無を確認 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 第三引数:フィールドの名前空間URL 第四引数:フィールド名 |
| GetStructField | プロパティのフィールド値を取得 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 第三引数:フィールドの名前空間URL 第四引数:フィールド名 第五引数:取得データアドレス |
| SetStructPropertyCurrentDate | プロパティを現在日時に変更、もしくは現在日時のプロパティを追加 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 第三引数:フィールドの名前空間URL 第四引数:フィールド名 第五引数:格納データ |
| UpdateDocument | PDF文書のメタデータを更新 XMPインターフェース |
| DocumentToFile | 更新されたPDF文書を出力 引数:出力ファイルパス |
| CloseInterface | XMPインターフェースをクローズ |
| CloseDoc | PDF文書をクローズ |
| Uninitialize | ライブラリの終了 |
| C# | C/C++ | Python | 他のサンプル | ダウンロード |
from PdfImagerLP import Mlp
# インスタンス生成
mlp = Mlp();
# 初期化
if mlp.Initialize("0-0G09-43RG04GW9120") < 0:
print("ライセンスキーが不正です。");
exit()
# オープン
if mlp.OpenDoc("in.pdf") < 0:
print("PDFファイルを開けません。")
else:
# Structureプロパティ
xmp = mlp.GetXmpInterface()
if 0 >= xmp.DoesStructPropertyExist("http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize"):
print('プロパティはありません')
else:
# Structureプロパティのフィールド値
print(xmp.GetStructField("http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize", "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "h"))
# フィールド値変更(追加)
xmp.SetStructField("http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize", "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "h", "300");
xmp.SetStructField("http://ns.adobe.com/xap/1.0/t/pg/", "MaxPageSize", "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "hMax", "1000");
# PDF文書更新
xmp.UpdateDocument()
# 更新された文書を出力
mlp.DocumentToFile("out.pdf")
# クローズ
xmp.CloseInterface()
mlp.CloseDoc();
# 後始末
mlp.Uninitialize();
| Initialize | 初期化 引数にライセンスキーを指定します。 |
| OpenDoc | PDF文書をオープン 第一引数:ファイルパス名 第二引数:オーナーパスワード 第三引数:ユーザーパスワード |
| GetXmpInterface | XMPインターフェースを取得 |
| DoesStructPropertyExist | structプロパティの有無を確認 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 第三引数:フィールドの名前空間URL 第四引数:フィールド名 |
| GetStructField | プロパティのフィールド値を取得 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 第三引数:フィールドの名前空間URL 第四引数:フィールド名 第五引数:取得データアドレス |
| SetStructPropertyCurrentDate | プロパティを現在日時に変更、もしくは現在日時のプロパティを追加 第一引数:プロパティの名前空間URL 第二引数:プロパティ名 第三引数:フィールドの名前空間URL 第四引数:フィールド名 第五引数:格納データ |
| UpdateDocument | PDF文書のメタデータを更新 XMPインターフェース |
| DocumentToFile | 更新されたPDF文書を出力 引数:出力ファイルパス |
| CloseDoc | PDF文書をクローズ |
| Uninitialize | ライブラリの終了 |
以下は、上記コードで変更されたメタデータの例です。
<xmpTPg:MaxPageSize rdf:parseType="Resource">
<stDim:h>300</stDim:h>
<stDim:w>210</stDim:w>
<stDim:unit>mm</stDim:unit>
<stDim:hMax>1000</stDim:hMax>
</xmpTPg:MaxPageSize>