PDF Imager-LP PDF文書からオブジェクトを抽出
PDF Imager-LP
PDF Imager-LPは、PDF文書を画像(TIFF、JPEG、PNG、BMP)に変換するライブラリです。( PDF Imager-LP概要 )
価格見積り
ダウンロード:
PDF Imager-LPの無償体験版は、以下からダウンロードできます。無償体験版は、製品版と同じ機能が使えます。
利用許諾契約書をご確認のうえダウンロードしてください。ダウンロードしますと、利用許諾に同意したものとみなします。
評価利用では、ライセンスキーが必要です。
インストール
/*C#*/ ?>
C#開発環境 | C/C++開発環境 | Python開発環境 |
Imager-LPパッケージをダウンロードしてから、適当なフォルダーに解凍してください。
以下のようなフォルダーができますので適宜ご利用ください。
doc | ライブラリ説明書、利用許諾契約書 |
include | C/C++用ヘッダー(.h)ファイル |
lib | DLLライブラリ、Libファイル |
sample | C/C++言語、C#言語サンプル および、 Windowsアプリケーション(C++およびC#) |
C#開発環境 | C/C++開発環境 | Python開発環境 |
Imager-LPパッケージをダウンロードしてから、適当なフォルダーに解凍してください。
以下のようなフォルダーができますので適宜ご利用ください。
doc | ライブラリ説明書、利用許諾契約書 |
include | C/C++用ヘッダー(.h)ファイル |
lib | DLLライブラリ、Libファイル |
sample | C/C++言語、C#言語サンプル および、 Windowsアプリケーション(C++およびC#) |
C#開発環境 | C/C++開発環境 | Python開発環境 |
Imager-LPパッケージをダウンロードしてから、適当なフォルダーに解凍してください。
以下のようなフォルダーができますので適宜ご利用ください。
doc | ライブラリ説明書、利用許諾契約書 |
include | C/C++用ヘッダー(.h)ファイル |
lib | DLLライブラリ、Libファイル |
sample | C/C++言語、C#言語サンプル および、 Windowsアプリケーション(C++およびC#) |
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-0G81-923K40088E56")) { 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-0G81-923K40088E56") < 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-0G81-923K40088E56") < 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-0G81-923K40088E56")) { 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-0G81-923K40088E56") < 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-0G81-923K40088E56") < 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-0G81-923K40088E56")) { 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-0G81-923K40088E56") < 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-0G81-923K40088E56")) { 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-0G81-923K40088E56") < 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-0G81-923K40088E56")) { 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-0G81-923K40088E56") < 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