アイコン 株式会社トラスト・ソフトウェア・システム
電話:03-5316-3375info@trustss.co.jp
電話:03-5316-3375info@trustss.co.jp

開発者向けPDFライブラリ - Pdftools SDK

メタデータ(Metadata)管理機能

PDF文書のメタデータを読みだしたり、変更して書き込んだりします。
ニーズに合わせて読み出したり、変更する項目を選択できます。

価格見積もり

 NOTE:
この機能は「Pdftools SDK」ライブラリの一部です。
Pdftools SDKの全機能は無償で試用できます。

APIリファレンス

APIリファレンス(英文)はこちらです。

PDF文書のメタデータを読み出す 機能

Pdftools SDK の Metadataクラス(C#C/C++)を使用してPDF文書のメタデータを読み出します。
たとえば、PDF文書の作成順に検索したり、特定の作成者のPDF文書を検索したりできます。

PDFのメタデータを変更する 機能

Pdftools SDK の MetadataSettingクラス(C#C/C++)を使用してPDF文書のメタデータを変更します。
変更するメータデータを個別に指定することも、特定のPDF文書のメタデータをコピーすることも容易です。

サンプル

download link

C#のサンプルプロジェクトではPdftools SDKライブラリ(DLL)をNuGetから自動でダウンロードします。
Cのサンプルの場合は最新バージョンのライブラリ(DLL)をダウンロードしてください。

ライセンスキー無し(無償)で試用できます。ただし、結果に「透かし」が入ります。
「透かし」の削除をご希望の場合は問い合わせページまたはメールでお問い合わせください。

License Agreement(利用許諾契約書)は必ず確認してください。

PDF文書にメタデータを追加

PDF文書にメタデータを各項目ごとに追加したり、別のPDF文書のメタデータをコピーしたりします。


サンプル・プロジェクト(C)をダウンロード
サンプルプロジェクト(C#)をダウンロード
サンプルプロジェクト(Python)をダウンロード
サンプル・プロジェクトをダウンロード
サンプル・プロジェクトの実行手順を参照してください
#define BUFFER_SIZE	256
TCHAR buffer[BUFFER_SIZE];

// Initialize library
PdfTools_Initialize();

// 既定では、テスト用ライセンスが有効です。ただし、結果に「透かし」が追加されます。
// ライセンスキーを取得している場合は、以下のラインのコメントを外しライセンスキーをセットしてください。
// GOTO_CLEANUP_IF_FALSE_PRINT_ERROR(PdfTools_Sdk_Initialize(_T("ここにライセンスキーをセット"), NULL),
//                                  _T("Failed to set the license key. %s (ErrorCode: 0x%08x).\n"), szErrorBuff,
//                                  PdfTools_GetLastError());

// 入力ファイルを開く
_tfopen_s(&pInStream, szInPath, _T("rb"));
GOTO_CLEANUP_IF_NULL_PRINT_ERROR(pInStream, _T("Failed to open the input file \"%s\" for reading.\n"), szInPath);
TPdfToolsSys_StreamDescriptor inDesc;
PdfToolsSysCreateFILEStreamDescriptor(&inDesc, pInStream, 0);
pInDoc = PdfToolsPdf_Document_Open(&inDesc, _T(""));
GOTO_CLEANUP_IF_NULL_PRINT_ERROR(
    pInDoc, _T("Failed to create a document from the input file \"%s\". %s (ErrorCode: 0x%08x).\n"), szInPath,
    szErrorBuff, PdfTools_GetLastError());

TPdfToolsPdf_MetadataSettings* metaSet = PdfToolsPdf_MetadataSettings_New();
TPdfToolsPdf_Document* metaDoc = NULL;

if (szMetaPath) {
    // 参照するPDF
    if (!_tfopen_s(&pMetaStream, szMetaPath, _T("rb"))) {
        TPdfToolsSys_StreamDescriptor metaDesc;
        PdfToolsSysCreateFILEStreamDescriptor(&metaDesc, pMetaStream, 0);
        metaDoc = PdfToolsPdf_Document_Open(&metaDesc, NULL);
        if (metaDoc) {
            TPdfToolsPdf_Metadata* meta = PdfToolsPdf_Document_GetMetadata(metaDoc);
            if (meta) {
                if (PdfToolsPdf_Metadata_GetTitle(meta, buffer, BUFFER_SIZE)) PdfToolsPdf_MetadataSettings_SetTitle(metaSet, buffer);
                if (PdfToolsPdf_Metadata_GetAuthor(meta, buffer, BUFFER_SIZE)) PdfToolsPdf_MetadataSettings_SetAuthor(metaSet, buffer);
                if (PdfToolsPdf_Metadata_GetSubject(meta, buffer, BUFFER_SIZE)) PdfToolsPdf_MetadataSettings_SetSubject(metaSet, buffer);
                if (PdfToolsPdf_Metadata_GetKeywords(meta, buffer, BUFFER_SIZE)) PdfToolsPdf_MetadataSettings_SetKeywords(metaSet, buffer);
                if (PdfToolsPdf_Metadata_GetCreator(meta, buffer, BUFFER_SIZE)) PdfToolsPdf_MetadataSettings_SetCreator(metaSet, buffer);
                if (PdfToolsPdf_Metadata_GetProducer(meta, buffer, BUFFER_SIZE)) PdfToolsPdf_MetadataSettings_SetProducer(metaSet, buffer);
                TPdfToolsSys_Date date;
                if (PdfToolsPdf_Metadata_GetCreationDate(meta, &date)) PdfToolsPdf_MetadataSettings_SetCreationDate(metaSet, &date);
                if (PdfToolsPdf_Metadata_GetModificationDate(meta, &date)) PdfToolsPdf_MetadataSettings_SetModificationDate(metaSet, &date);
            }
            else goto Local_Set;
        }
        else goto Local_Set;
    }
    else goto Local_Set;
}
else {
Local_Set:
    PdfToolsPdf_MetadataSettings_SetTitle(metaSet, _T("Title"));
    PdfToolsPdf_MetadataSettings_SetAuthor(metaSet, _T("someAuthor"));
    PdfToolsPdf_MetadataSettings_SetSubject(metaSet, _T("Subject"));
    PdfToolsPdf_MetadataSettings_SetCreator(metaSet, _T("someCreator"));
    PdfToolsPdf_MetadataSettings_SetProducer(metaSet, _T("someProducer"));
}

// 参照PDFを閉じる
if (metaDoc) PdfToolsPdf_Document_Close(metaDoc);
if (pMetaStream) fclose(pMetaStream);

// 出力Streamを作成
_tfopen_s(&pOutStream, szOutPath, _T("wb+"));
GOTO_CLEANUP_IF_NULL_PRINT_ERROR(pOutStream, _T("Failed to create output file \"%s\" for writing.\n"), szOutPath);
TPdfToolsSys_StreamDescriptor outDesc;
PdfToolsSysCreateFILEStreamDescriptor(&outDesc, pOutStream, 0);

// 出力オプション
TPdfToolsPdf_OutputOptions* outOpt = PdfToolsPdf_OutputOptions_New();
PdfToolsPdf_OutputOptions_SetMetadataSettings(outOpt, metaSet);

// 出力
TPdfToolsOptimization_Optimizer* opt = PdfToolsOptimization_Optimizer_New();
PdfToolsOptimization_Optimizer_OptimizeDocument(opt, pInDoc, &outDesc,
    (TPdfToolsOptimizationProfiles_Profile*)PdfToolsOptimizationProfiles_MinimalFileSize_New(), outOpt);
サンプル・プロジェクトの実行手順を参照してください
 サンプルで使うクラスなどの日本語APIリファレンス
private static void AddMetadata(string inPath, string outPath, string mDataFile)
{
    //入力ファイル
    using var inStream = File.OpenRead(inPath);
    var inDoc = Document.Open(inStream);

    //メタデータ作成
    MetadataSettings metaSet = new MetadataSettings();
    try
    {
        using var mStr = File.OpenRead(mDataFile);
        var mDoc = Document.Open(mStr);
        var meta = mDoc.Metadata;
        metaSet.Author = meta.Author == "" ? "" : meta.Author;
        metaSet.CreationDate = meta.CreationDate == null ? null : meta.CreationDate;
        metaSet.Creator = meta.Creator == "" ? "" : meta.Creator;
        metaSet.ModificationDate = meta.ModificationDate == null ? null : meta.ModificationDate;
        metaSet.Producer = meta.Producer == "" ? "" : meta.Producer;
        metaSet.Subject = meta.Subject == "" ? "" : meta.Subject;
        metaSet.Title = meta.Title == "" ? "" : meta.Title;
    }
    catch (Exception)
    {
        metaSet.Author = "someAuther";
        metaSet.CreationDate = DateTimeOffset.Now;
        metaSet.Creator = "someCreator";
        metaSet.ModificationDate = DateTimeOffset.Now;
        metaSet.Producer = "SomeProducer";
        metaSet.Subject = "Subject";
        metaSet.Title = "Title";
    }

    //出力オプション
    var outOpt = new OutputOptions();
    outOpt.MetadataSettings = metaSet;

    //出力PDFのProfile
    var profile = new MinimalFileSize();

    //出力Stream作成
    using var outStr = File.Create(outPath);

    //出力PDF作成
    using var outDoc = new Optimizer().OptimizeDocument(inDoc, outStr, profile, outOpt);
}			
サンプル・プロジェクトの実行手順を参照してください

			

		

他の機能サンプルを参照してください。

お問い合わせ、ご質問、技術サポート

質問のページからお送りいただくようお願いします。
または、メールでsupport@trustss.co.jpあてにお送りください。


ご購入前の技術的質問も無償で対応します。サポート受付ページからお願いします。

> PDF Structure (PDF構成)

> PDF Imager-LP (画像化)

> PDF Stamper (電子印鑑)

> Pdftools SDK

- サンプル・コード
- Pdftools SDKサンプルの利用手順
- Toolbox Add-on
- Toolbox Add-onサンプルの利用手順
> Pdftools SDK APIリファレンス
- その他のAPI及びコマンドラインツール
> PDF SDK オープンソースと有償ライブラリ