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-0GWG-HE1100W6R1R7")) {
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-0GWG-HE1100W6R1R7") < 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-0GWG-HE1100W6R1R7") < 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-0GWG-HE1100W6R1R7")) {
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-0GWG-HE1100W6R1R7") < 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-0GWG-HE1100W6R1R7") < 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-0GWG-HE1100W6R1R7")) {
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-0GWG-HE1100W6R1R7") < 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-0GWG-HE1100W6R1R7")) {
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-0GWG-HE1100W6R1R7") < 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-0GWG-HE1100W6R1R7")) {
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-0GWG-HE1100W6R1R7") < 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