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-032E-E03H5EW76R15" [評価用ライセンスキー] (無償)

インストール


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')

すべてのオブジェクトを抽出

PDF文書からすべてのオブジェクトを抽出し表示するサンプルコードです。
結果ではオブジェクト ストリームは通常のオブジェクトのように変換され、圧縮されたストリームは適切に伸長されますのでLength要素の値とは違ったサイズになります。

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

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

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

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

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

        // 最大オブジェクト番号
        int nMax = PrmMaxObjectNumber(h);

        // 表示
        for (int i = 1; i <= nMax; i++) {
            PrmObjectHandle oh = PrmObjectHandleIndirect(h, i);
            if (oh.type != PRM_NUL_OBJ) {
                char *data;
                PrmStringObjectHandle(h, oh, 0, 1, 0, &data);
                printf("%d %d obj\n%s\nendobj\n",
                    i, PrmObjectHandleReferenceToGeneration(h, oh),
                    data);
            }
        }

        // クローズ
        PrmCloseInterface(h);
        MlpCloseDoc();
    }

    // 後始末
    MlpUninitialize();
}
MlpInitialize初期化
 引数にライセンスキー"0-032E-E03H5EW76R15" (評価用ライセンスキー) を指定します。
MlpOpenDocPDF文書をオープン
 第一引数:ファイルパス名
 第二引数:オーナーパスワード
 第三引数:ユーザーパスワード
MlpGetPrimitiveInterfacePDFの構成要素を抽出するインターフェースのハンドルを取得
PrmObjectHandleIndirect指定された番号のオブジェクトを取得 文書の最大オブジェクト番号を戻します。
 第一引数:ハンドル
 第二引数:オブジェクト番号
PrmStringObjectHandleオブジェクトを文字列で取得
 第一引数:ハンドル
 第二引数:オブジェクトハンドル
 第三引数:参照オブジェクトを解決
 第四引数:streamを文字列に含める
 第五引数:改行して見易く
PrmObjectHandleIndirectToGenerationオブジェクトの世代番号を取得
 第一引数:ハンドル
 第二引数:オブジェクトハンドル
PrmCloseInterface構成要素を抽出するインターフェースのハンドルを終了
 第一引数:ハンドル
MlpCloseDocPDF文書をクローズ
MlpUninitializeライブラリの終了
C# C/C++ Python 他のサンプル ダウンロード
using System;
using PDFTools.PdfImagerLP;

namespace StartXref
{
    class StartXref
    {
        static void Main(string[] args)
        {
            using (var mlp = new PdfImager("0-032E-E03H5EW76R15"))
            {
                // オープン
                if (0 <= mlp.OpenDoc("HelloWorld.pdf"))
                {
                    // Primitiveインターフェース
                    PrimitiveInterface prm = p2i.GetPrimitiveInterface();

                    // 最大オブジェクト番号
                    int nMax = prm.MaxObjectNumber();

                    //表示
                    for(int i = 1; i <=nMax; i++)
                    {
                        var oh = prm.ObjectHandleIndirect(i);
                        if(oh.type != PrmObjectType.PRM_NULL_OBJ)
                        {
                            Console.WriteLine($"{i} {prm.ObjectHandleReferenceToGeneration(oh)} obj");
                            Console.WriteLine($"{prm.StringObjectHandle(oh, false, true)}\nendobj");
                        }
                    }

                    // クローズ
                    prm.CloseInterface();
                    mlp.CloseDoc();
                }
            }
        }
    }
}
Initialize初期化
 引数にライセンスキー"0-032E-E03H5EW76R15" (評価用ライセンスキー) を指定します。
OpenDocPDF文書をオープン
 第一引数:ファイルパス名
 第二引数:オーナーパスワード(省略可)
 第三引数:ユーザーパスワード(省略可)
GetPrimitiveInterfacePDFの構成要素を抽出するインターフェースのハンドルを取得
ObjectHandleIndirect指定された番号のオブジェクトを取得 文書の最大オブジェクト番号を戻します。
 引数:オブジェクト番号
ObjectHandleIndirectToGenerationオブジェクトの世代番号を取得
 引数:オブジェクトハンドル
StringObjectHandleオブジェクトを文字列で取得
 第一引数:オブジェクトハンドル
 第二引数:参照オブジェクトを解決(省略可)
 第三引数:streamを文字列に含める(省略可)
 第四引数:改行して見易く(省略可)
CloseInterface構成要素を抽出するインターフェースのハンドルを終了
CloseDocPDF文書をクローズ
C# C/C++ Python 他のサンプル ダウンロード
from PdfImagerLP import Mlp,PrmConstant

mlp = Mlp()
#初期化
if mlp.Initialize("0-032E-E03H5EW76R15") < 0:
    print("ライセンスエラー")
    exit()

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

    # 最大オブジェクト番号
    nMax = prm.MaxObjectNumber()

    # 表示
    for i in range(1, nMax+1):
        oh = prm.ObjectHandleIndirect(i)
        if oh.type != PrmConstant.NULL_OBJ:
            print(i, prm.ObjectHandleReferenceToGeneration(oh), 'obj')
            s = prm.StringObjectHandle(oh, stream=True)
            print(s, '\nendobj')

    # クローズ
    prm.CloseInterface()
    mlp.CloseDoc()

# 終了
mlp.Uninitialize()
Initialize初期化
 引数にライセンスキー"0-032E-E03H5EW76R15" (評価用ライセンスキー) を指定します。
OpenDocPDF文書をオープン
 第一引数:ファイルパス名
 第二引数:オーナーパスワード(省略可)
 第三引数:ユーザーパスワード(省略可)
GetPrimitiveInterfacePDFの構成要素を抽出するインターフェースのハンドルを取得
ObjectHandleIndirect指定された番号のオブジェクトを取得 文書の最大オブジェクト番号を戻します。
 引数:オブジェクト番号
ObjectHandleIndirectToGenerationオブジェクトの世代番号を取得
 引数:オブジェクトハンドル
StringObjectHandleオブジェクトを文字列で取得
 第一引数:オブジェクトハンドル
 第二引数:参照オブジェクトを解決([resolve],省略可)
 第三引数:streamを文字列に含める([stream],省略可)
 第四引数:改行して見易く([pretty],省略可)
CloseInterface構成要素を抽出するインターフェースのハンドルを終了
CloseDocPDF文書をクローズ

結果は以下です。
1 0 obj
<</Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</ModDate(D:20140217010203)/Producer(PDF Easy Parse Trust Soft Sys)>>
endobj
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
6 0 obj
<</Font<</SF1 7 0 R>>/ProcSet[/PDF/Text]>>
endobj
7 0 obj
<</BaseFont/Helvetica/Encoding/WinAnsiEncoding/Subtype/Type1/Type/Font>>
endobj

ご質問、お問い合わせ

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

PDF Toolsライト

PDF Imager-LPサンプル

PDF 構文解説

(ISO32000-1より)

PDF Tools C++サンプル