PDF Imager-LP PDF文書からオブジェクトを抽出

PDF Imager-LP

PDF Imager-LPは、PDF文書を画像(TIFF、JPEG、PNG、BMP)に変換するライブラリです。( PDF Imager-LP概要

 価格見積り

ダウンロード:
PDF Imager-LPの無償体験版は、以下からダウンロードできます。無償体験版は、製品版と同じ機能が使えます。
利用許諾契約書をご確認のうえダウンロードしてください。ダウンロードしますと、利用許諾に同意したものとみなします。
評価利用では、ライセンスキーが必要です。

PDFImagerLP-1_9_1.zip(体験版パッケージ)
体験版(評価)用 ライセンスキー"0-03E6-31KE140H8HRE" [評価用ライセンスキー] (無償)

インストール


C#開発環境 C/C++開発環境 Python開発環境
ライブラリは無償でダウンロードおよび試用できます。
Imager-LPパッケージをダウンロードしてから、適当なフォルダーに解凍してください。
以下のようなフォルダーができますので適宜ご利用ください。
docライブラリ説明書、利用許諾契約書
includeC/C++用ヘッダー(.h)ファイル
libDLLライブラリ、Libファイル
sampleC/C++言語、C#言語サンプル および、
Windowsアプリケーション(C++およびC#)
サンプルはlib/x64/PdfImagerLP.dll(またはlib/Win32/PdfImagerLP.dll)およびlib/PdfImagerLP.dllを参照しますので、適切なフォルダーにコピーしてください。

C#開発環境 C/C++開発環境 Python開発環境
ライブラリは無償でダウンロードおよび試用できます。
Imager-LPパッケージをダウンロードしてから、適当なフォルダーに解凍してください。
以下のようなフォルダーができますので適宜ご利用ください。
docライブラリ説明書、利用許諾契約書
includeC/C++用ヘッダー(.h)ファイル
libDLLライブラリ、Libファイル
sampleC/C++言語、C#言語サンプル および、
Windowsアプリケーション(C++およびC#)
サンプルはlib/x64/PdfImagerLP.dll(またはlib/Win32/PdfImagerLP.dll)を参照しますので、適切なフォルダーにコピーしてください。

C#開発環境 C/C++開発環境 Python開発環境
ライブラリは無償でダウンロードおよび試用できます。
Imager-LPパッケージをダウンロードしてから、適当なフォルダーに解凍してください。
以下のようなフォルダーができますので適宜ご利用ください。
docライブラリ説明書、利用許諾契約書
includeC/C++用ヘッダー(.h)ファイル
libDLLライブラリ、Libファイル
sampleC/C++言語、C#言語サンプル および、
Windowsアプリケーション(C++およびC#)
サンプルはモジュール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')

サンプル コード

Xrefへのオフセット値を抽出

PDF文書からクロスリファレンス・テーブルへのオフセット値を抽出し表示するサンプルコードです。

このサンプルはHelloWorld.pdfのxrefとtrailerを抽出します。このPDFの内容はHelloWorld.txtです。

C# C/C++ Python 他の抽出サンプル サンプル ダウンロード 他サンプル
#include "ImagerLP.h"

int main()
{
    // 初期化(ライセンスキー)
    if (MlpInitialize("0-03E6-31KE140H8HRE")) {
        printf("License error\n");
        return 100;
    }

    // 入力ファイルをオープン
    if (0 <= MlpOpenDoc("HelloWorld.pdf", "", "")) {

        // Primitiveインターフェース
        PRIMITIVE_HANDLE h = MlpGetPrimitiveInterface();

        // Xrefへのオフセット
        printf("startxref\n%d\n%%%%EOF\n", PrmGetXrefOffset(h));

        // クローズ
        MlpCloseDoc();
    }

    //後始末
    MlpUninitialize();

    return 0;
}

※このサンプルは試験運用の関数を含んでいます。

C# C/C++ Python 他の抽出サンプル サンプル ダウンロード 他サンプル
using System;
using PDFTools.PdfImagerLP;

namespace StartXref
{
    class StartXref
    {
        static void Main(string[] args)
        {
            using (var mlp = new PdfImager())
            {
                if (mlp.Initialize("0-03E6-31KE140H8HRE") < 0) // ライセンスキー
                {
                    Console.WriteLine("ライセンスエラー");
                    return;
                }

                // オープン
                if (0 <= mlp.OpenDoc("HelloWorld.pdf"))
                {
                    // Primitiveインターフェース
                    PrimitiveInterface prm = p2i.GetPrimitiveInterface();

                    // xrefへのオフセット
                    Console.WriteLine("startxref\n{0}\n%%EOF", prm.GetXrefOffset());

                    // クローズ
                    mlp.CloseDoc();
                }
            }
        }
    }
}

※このサンプルは試験運用の関数を含んでいます。

C# C/C++ Python 他の抽出サンプル 他サンプル
from PdfImagerLP import Mlp

mlp = Mlp()
#初期化
if mlp.Initialize("0-03E6-31KE140H8HRE") < 0:
    print("ライセンスエラー")
    exit()

# 入力ファイルをオープン
if mlp.OpenDoc("HelloWorld.pdf") < 0:
    print('オープンエラー')
else:
    # Primitiveインターフェース
    prm = mlp.GetPrimitiveInterface()

    # Xrefへのオフセット
    print('startxref\n{0}\n%%EOF'.format(prm.GetXrefOffset()))

    # クローズ
    prm.CloseInterface()

# 終了
mlp.Uninitialize()

※このサンプルは試験運用の関数を含んでいます。


結果は以下です。
startxref
609
%%EOF

XrefおよびTrailerオブジェクトを抽出

PDF文書からクロスリファレンス・テーブルおよびトレイラー(Trailer)を抽出し表示するサンプルコードです。

このサンプルはHelloWorld.pdfのxrefとtrailerを抽出します。このPDFの内容はHelloWorld.txtです。

C# C/C++ Python 他の抽出サンプル サンプル ダウンロード 他サンプル
#include "ImagerLP.h"

int main()
{
    // 初期化(ライセンスキー)
    if (MlpInitialize("0-03E6-31KE140H8HRE")) {
        printf("License error\n");
        return 100;
    }

    // 入力ファイルをオープン
    if (0 <= MlpOpenDoc("HelloWorld.pdf", "", "")) {

        // Primitiveインターフェース
        PRIMITIVE_HANDLE h = MlpGetPrimitiveInterface();

        // Xref
        char *data;
        PrmStringXref(h, &data);
        printf("xref\n%s\n", data);

        // Trailer
        PrmStringTrailer(h, 1, &data);
        printf("trailer\n%s\n", data);

        // クローズ
        MlpCloseDoc();
    }

    //後始末
    MlpUninitialize();

    return 0;
}

※このサンプルは試験運用の関数を含んでいます。

C# C/C++ Python 他の抽出サンプル サンプル ダウンロード 他サンプル
using System;
using PDFTools.PdfImagerLP;

namespace Trailer
{
    class Trailer
    {
        static void Main(string[] args)
        {
            using (var mlp = new PdfImager())
            {
                if (mlp.Initialize("0-03E6-31KE140H8HRE") < 0) // ライセンスキー
                {
                    Console.WriteLine("ライセンスエラー");
                    return;
                }

                // オープン
                if (0 <= mlp.OpenDoc("HelloWorld.pdf"))
                {
                    // Primitiveインターフェース
                    PrimitiveInterface prm = p2i.GetPrimitiveInterface();

                    // xref
                    Console.WriteLine("xref\n{0}", prm.StringXref());

                    // triler
                    Console.WriteLine("trailer\n{0}", prm.StringTrailer(true));

                    // クローズ
                    mlp.CloseDoc();
                }
            }
        }
    }
}

※このサンプルは試験運用の関数を含んでいます。

C# C/C++ Python 他の抽出サンプル 他サンプル
from PdfImagerLP import Mlp()
mlp = Mlp()
#初期化
if mlp.Initialize("0-03E6-31KE140H8HRE") < 0:
    print("ライセンスエラー")
    exit()

# 入力ファイルをオープン
if mlp.OpenDoc("HelloWorld.pdf") < 0:
    print('オープンエラー')
else:
    # Primitiveインターフェース
    prm = mlp.GetPrimitiveInterface()

    # Xref
    print('xref\n{0}'.format(prm.StringXref()))

    # Trailer
    print('trailer\n{0}'.format(prm.StringTrailer(True)))

    # クローズ
    prm.CloseInterface()

# 終了
mlp.Uninitialize()

※このサンプルは試験運用の関数を含んでいます。


結果は以下です。
xref
0 8
0000000000 65535 f
0000000015 00000 n
0000000064 00000 n
0000000155 00000 n
0000000214 00000 n
0000000320 00000 n
0000000444 00000 n
0000000512 00000 n

trailer
<<
  /Info 2 0 R
  /Root 1 0 R
  /Size 8
  /ID [ <1775615B6D180FF72F4473D56AAA72BF> <72A0D712105C3BF2F3CC612135CADE68> ]
>>

文書情報(Document Information)オブジェクトを抽出

PDF文書から文書情報(Document Information)を抽出し表示するサンプルコードです。

このサンプルはHelloWorld.pdfのCatalogを抽出します。このPDFの内容はHelloWorld.txtです。

C# C/C++ Python 他の抽出サンプル サンプル ダウンロード 他サンプル
#include "ImagerLP.h"
#define PRETTY  1   //改行して見やすく

int main()
{
    // 初期化(ライセンスキー)
    if (MlpInitialize("0-03E6-31KE140H8HRE")) {
        printf("License error\n");
        return 100;
    }

    // 入力ファイルをオープン
    if (0 <= MlpOpenDoc("HelloWorld.pdf", "", "")) {

        // Primitive インターフェース
        PRIMITIVE_HANDLE h = MlpGetPrimitiveInterface();

        // Document Information
        PrmShowDocumentInformation(h, PRETTY);

        // クローズ
        MlpCloseDoc();
    }

    //後始末
    MlpUninitialize();

    return 0;
}

※このサンプルは試験運用の関数を含んでいます。

C# C/C++ Python 他の抽出サンプル サンプル ダウンロード 他サンプル
using System;
using PDFTools.PdfImagerLP;

namespace DocumentInfo
{
    class DocumentInfo
    {
        static void Main(string[] args)
        {
            using (var mlp = new PdfImager())
            {
                try
                {
                if (mlp.Initialize("0-03E6-31KE140H8HRE") < 0) // ライセンスキー
                {
                    Console.WriteLine("ライセンスエラー");
                    return;
                }

                // オープン
                if (0 <= mlp.OpenDoc("HelloWorld.pdf"))
                {

                    const bool PRETTY = true;   //改行して見やすく

                    // Primitive インターフェース
                    PrimitiveInterface prm = mlp.GetPrimitiveInterface();

                    // Document Information
                    prm.ShowDocumentInformation(PRETTY);

                    // クローズ
                    mlp.CloseDoc();
                }
            }
        }
    }
}

※このサンプルは試験運用の関数を含んでいます。

C# C/C++ Python 他の抽出サンプル 他サンプル
from PdfImagerLP import Mlp()
mlp = Mlp()
#初期化
if mlp.Initialize("0-0GEW-31KE94R88H8W") < 0:
    print("ライセンスエラー")
    exit()

# 入力ファイルをオープン
if mlp.OpenDoc("HelloWorld.pdf") < 0:
    print('オープンエラー')
else:
    # Primitiveインターフェース
    prm = mlp.GetPrimitiveInterface()

    # Document Information
    prm.ShowDocumentInformation(True)

    # クローズ
    prm.CloseInterface()

# 終了
mlp.Uninitialize()

※このサンプルは試験運用の関数を含んでいます。


結果は以下です。
2 0 obj
<<
  /ModDate (D:20211224010203)
  /Producer (PDF Easy Parse Trust Soft Sys)
>>
endobj

Catalog(Root)オブジェクトを抽出

PDF文書からCatalog(Root)を抽出し表示するサンプルコードです。

このサンプルはHelloWorld.pdfのCatalogを抽出します。このPDFの内容はHelloWorld.txtです。

C# C/C++ Python 他の抽出サンプル サンプル ダウンロード 他サンプル
#include "ImagerLP.h"

#define PRETTY  1   //改行して見やすく
#define RESOLVE 1   //参照オブジェクトを解決
#define STREAM  0   //streamを非表示

int main()
{
    // 初期化(ライセンスキー)
    if (MlpInitialize("0-03E6-31KE140H8HRE")) {
        printf("License error\n");
        return 100;
    }

    // 入力ファイルをオープン
    if (0 < MlpOpenDoc("HelloWorld.pdf", "", "")) {

        // Primitive インターフェース
        PRIMITIVE_HANDLE h = MlpGetPrimitiveInterface();

        // Trailer
        PrmObjectHandle trailerh = PrmObjectHandleTrailer(h);

        // Catalog(Root)
        PrmObjectHandle catalogh = PrmObjectHandleDictionaryByString(h, trailer, "Root");
        PrmShowObjectHandle(h, catalogh, RESOLVE, STREAM, PRETTY);

        // クローズ
        MlpCloseDoc();
    }

    //後始末
    MlpUninitialize();

    return 0;
}

※このサンプルは試験運用の関数を含んでいます。

C# C/C++ Python 他の抽出サンプル サンプル ダウンロード 他サンプル
using System;
using PDFTools.PdfImagerLP;

namespace Catalog
{
    class Catalog
    {
        static void Main(string[] args)
        {
            using (var mlp = new PdfImager())
            {
                if (mlp.Initialize("0-03E6-31KE140H8HRE") < 0) // ライセンスキー
                {
                    Console.WriteLine("ライセンスエラー");
                    return;
                }

                // オープン
                if (0 <= mlp.OpenDoc("HelloWorld.pdf"))
                {

                    const bool PRETTY = true;   //改行して見やすく
                    const bool STREAM = false;  //streamを非表示
                    const bool RESOLVE = true;  //参照オブジェクトを解決

                    // Primitive インターフェース
                    PrimitiveInterface prm = mlp.GetPrimitiveInterface();

                    // Triler
                    ObjectHandle trailerh = prm.ObjectHandleTrailer();

                    // Catalog(Root)
                    ObjectHandle rooth = prm.ObjectHandleDictionaryByString(trailerh, "Root");
                    Console.WriteLine(rooth.ToString(RESOLVE, STREAM, PRETTY));

                    // クローズ
                    mlp.CloseDoc();
                }
            }
        }
    }
}

※このサンプルは試験運用の関数を含んでいます。

C# C/C++ Python 他の抽出サンプル 他サンプル
from PdfImagerLP import Mlp()
mlp = Mlp()
#初期化
if mlp.Initialize("0-0GEW-31KE94R88H8W") < 0:
    print("ライセンスエラー")
    exit()

# 入力ファイルをオープン
if mlp.OpenDoc("HelloWorld.pdf") < 0:
    print('オープンエラー')
else:
    # Primitiveインターフェース
    prm = mlp.GetPrimitiveInterface()

    # Catalog(Root)
    prm.ShowCatalog(True)

    # クローズ
    prm.CloseInterface()

# 終了
mlp.Uninitialize()

※このサンプルは試験運用の関数を含んでいます。


結果は以下です。
1 0 obj
<<
  /Pages 3 0 R
  /Type /Catalog
>>
endobj

PageTree, Page, Contentsオブジェクトを抽出

PDF文書からPageTree, Page, Contentsを抽出し表示するサンプルコードです。

このサンプルはHelloWorld.pdfのCatalogを抽出します。このPDFの内容はHelloWorld.txtです。

C# C/C++ Python 他の抽出サンプル サンプル ダウンロード 他サンプル
#include "ImagerLP.h"

#define PRETTY  1   //改行して見やすく
#define RESOLVE 1   //参照オブジェクトを解決
#define STREAM  1   //streamを表示


int main()
{
    // 初期化(ライセンスキー)
    if (MlpInitialize("0-03E6-31KE140H8HRE")) {
        printf("License error\n");
        return 100;
    }

    // 入力ファイルをオープン
    if (MlpOpenDoc("HelloWorld.pdf", "", "") <= 0) {

        // Primitive インターフェース
        PRIMITIVE_HANDLE h = MlpGetPrimitiveInterface();

        // ページツリー
        PrmObjectHandle pageTreeh = PrmObjectHandlePageTree(h);
        PrmShowObjectHandle(h, pageTreeh, RESOLVE, 0, PRETTY);

        PrmObjectHandle pagesh = PrmObjectHandleDictionaryByString(h, pageTreeh, "Kids");

        int len = PrmObjectHandleArrayLength(h, pagesh);
        int aLen;
        for (int i = 0; i < len; i++) {
            // 各ページ
            PrmObjectHandle pageh = PrmObjectHandleArrayValue(h, pagesh, i);
            PrmShowObjectHandle(h, pageh, RESOLVE, 0, PRETTY);

            // コンテンツ
            PrmObjectHandle contentsh = PrmObjectHandleDictionaryByString(h, pageh, "Contents");

            switch (contentsh.type) {
            case PRM_UNKNOWN_OBJ:
                printf("The object has not '/Content' element.\n");
                break;
            case PRM_ARRAY_OBJ:
                aLen = PrmObjectHandleArrayLength(h, contentsh);
                for (int j = 0; j < aLen; j++) {
                    PrmObjectHandle c = PrmObjectHandleArrayValue(h, contentsh, j);
                    PrmShowObjectHandle(h, c, RESOLVE, 1, PRETTY);
                }
                break;
            case PRM_INDIRECT_OBJ:
            default:
                PrmShowObjectHandle(h, contentsh, RESOLVE, 1, PRETTY);
                break;
            }
        }

        // クローズ
        MlpCloseDoc();
    }

    //後始末
    MlpUninitialize();

    return 0;
}

※このサンプルは試験運用の関数を含んでいます。

C# C/C++ Python 他の抽出サンプル サンプル ダウンロード 他サンプル
using System;
using PDFTools.PdfImagerLP;

namespace Pages
{
    class Pages
    {
        static void Main(string[] args)
        {
            using (var mlp = new PdfImager())
            {
                if (mlp.Initialize("0-03E6-31KE140H8HRE") < 0) // ライセンスキー
                {
                    Console.WriteLine("ライセンスエラー");
                    return;
                }

                // オープン
                if (0 <= mlp.OpenDoc("HelloWorld.pdf"))
                {

                    // Primitive インターフェース
                    PrimitiveInterface prm = mlp.GetPrimitiveInterface();

                    //ページツリー
                    PrmObjectHandle pageTreeh = prm.ObjectHandlePageTree();
                    PrmObjectHandle pagesh = prm.ObjectHandleDictionaryByString(pageTreeh, "Kids");

                    int len = prm.ObjectHandleArrayLength(pagesh);
                    for (int i = 0; i < len; i++)
                    {
                        //各ページ
                        PrmObjectHandle pageh = prm.ObjectHandleArrayValue(pagesh, i);
                        Console.WriteLine(pageh.ToString(true, true, true));

                        //コンテンツ
                        PrmObjectHandle contentsh = prm.ObjectHandleDictionaryByString(pageh, "Contents");
                        switch (contentsh.type)
                        {
                            case PrmObjectType.PRM_UNKNOWN_OBJ:
                                Console.WriteLine("The object has not '/Content' element.");
                                break;
                            case PrmObjectType.PRM_INDIRECT_OBJ:
                                Console.WriteLine(contentsh.ToString(RESOLVE, STREAM, PRETTY));
                                break;
                            case PrmObjectType.PRM_ARRAY_OBJ:
                                {
                                    int aLen = prm.ObjectHandleArrayLength(contentsh);
                                    for (int j = 0; j < aLen; j++)
                                    {
                                        PrmObjectHandle c = prm.ObjectHandleArrayValue(contentsh, j);
                                        Console.WriteLine(c.ToString(RESOLVE, STREAM, PRETTY));
                                    }
                                }
                                break;
                        }
                    }

                    // クローズ
                    mlp.CloseDoc();
                }
            }
        }
    }
}

※このサンプルは試験運用の関数を含んでいます。

C# C/C++ Python 他の抽出サンプル 他サンプル
from PdfImagerLP import Mlp,PrmConstant
mlp = Mlp()
#初期化
if mlp.Initialize("0-0GEW-31KE94R88H8W") < 0:
    print("ライセンスエラー")
    exit()

# 入力ファイルをオープン
if mlp.OpenDoc("HelloWorld.pdf") < 0:
    print('オープンエラー')
else:
    # Primitiveインターフェース
    prm = mlp.GetPrimitiveInterface()

    # ページツリー
    pageTreeh = prm.ObjectHandlePageTree()
    pagesh = prm.ObjectHandleDictionaryByString(pageTreeh,'Kids')

    for i in range(prm.ObjectHandleArrayLength(pagesh)):
        # 各ページ
        pageh = prm.ObjectHandleArrayValue(pagesh, i)
        prm.ShowObjectHandle(pageh, True, 0, True)

        # コンテンツ
        contentsh = prm.ObjectHandleDictionaryByString(pageh, 'Contents')
        if contentsh.type == PrmConstant.UNKNOWN_OBJ:
            print('The object has not "/Content" element.')
        elif contentsh.type == PrmConstant.ARRAY_OBJ:
            for i in range(prm.ObjectHandleArrayLength(contentsh)):
                c = prm.ObjectHandleArrayValue(contentsh, j)
                prm.ShowObjectHandle(c, True, 1, True)
        else:
            prm.ShowObjectHandle(contentsh, True, 1, True)

    # クローズ
    prm.CloseInterface()

# 終了
mlp.Uninitialize()

※このサンプルは試験運用の関数を含んでいます。


結果は以下です。
3 0 obj
<</Count 1/Kids[4 0 R]/Type/Pages>>
endobj

4 0 obj
<</Contents 5 0 R/MediaBox[0 0 595 842]/Parent 3 0 R/Resources 6 0 R/Type/Page>>
endobj
5 0 obj
<</Length 75>>
stream
BT
1 0 0 1 100 600 Tm
/SF1 50 Tf
0 Ts 0 Tr 0 Tc 0 Tw
(Hello, World.) Tj
ET
endstream
endobj

ご質問、お問い合わせ

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

PDF Toolsライト

PDF Imager-LPサンプル

PDF 構文解説

(ISO32000-1より)

PDF Tools C++サンプル