C++インターフェイス

C++インターフェイスを利用することにより、C++プログラムへ AH PDFXML 変換ライブラリ を組み込むことが可能です。

注意: Windows版(32ビット)を Windows x64 Edition にインストールすることができますが、その場合にC/C++インターフェイスを利用するときは、Win32 プラットフォーム用にコンパイルしてください。

ヘッダファイル

以下のヘッダファイルが [Install directory]/include に含まれています。

ヘッダファイル 内容 場所
apxa_interface.h C++ 用ヘッダ [Install directory]/include
/AH/*.h
/AHCommon/*.h
/AHVersion/*.h
apxa_interface.hでインクルードしているヘッダファイル [Install directory]/include
/ICU/icu*.h ICU関係ヘッダファイル [Install directory]/include

ライブラリファイル

以下のライブラリファイルが [Install directory] または [Install directory]/lib に含まれています。

ライブラリファイル 内容 場所
AHPDFAnalyzer30.dll など
詳細は「Windowsモジュール構成」を参照お願いします。
Windows用 C++インターフェイス [Install directory]
AHPDFAnalyzer.so など
詳細は「Linuxモジュール構成」を参照お願いします。
Linux C++インターフェイス [Install directory]/lib

Windows版では、以下のリンク用ライブラリファイルが [Install directory]/lib に含まれています。

ライブラリファイル 内容 場所
AHPDFAnalyzer30.lib DLLリンク用ライブラリ [Install directory]/lib
AHCommon13.lib 共通ライブラリ [Install directory]/lib
icu*.lib ICU関係ライブラリ [Install directory]/lib

コンパイラについて

Windows

AH PDFXML 変換ライブラリ Windows版は、Microsoft Visual Studio 2015 でビルドされています。
呼び出し側のプログラムは、互換性のあるコンパイラをご使用ください。

Linux

AH PDFXML 変換ライブラリ Linux版およびLinux 64ビット版は、GCC 4.8 でビルドされています。
したがって、プログラムは GCC 4.8以降を使ってコンパイルされなくてはなりません。
GCC についての詳細な情報は GCC, the GNU Compiler Collection をご覧ください。

Antenna House PDFXML 変換クラス APXA_Converter

【メソッド】
int APXA_GetPageCount(std::istream *inputStream);

【機能】
PDFのページ数を取得します。

【パラメータ】
inputStream: PDFファイルストリーム

【戻り値】
ページ数
【メソッド】
void APXA_SetBaseName(AHString baseName);

【機能】
出力ファイルのベース名を指定します。

【パラメータ】
baseName: 出力ファイルのベース名

【戻り値】
なし
【メソッド】
void APXA_SetOutFolder(AHString outFolder);

【機能】
出力フォルダを指定します。

【パラメータ】
outFolder: 出力フォルダ名

【戻り値】
なし
【メソッド】
APXA_ERROR APXA_SetPassword(AHString password);

【機能】
アクセスパスワードを指定します。

【パラメータ】
password パスワード文字列(32文字以内)(入力:必須)

【戻り値】
APXA_ERROR
【メソッド】
void APXA_SetConversionOption(int option);

【機能】
変換条件を指定します。

【パラメータ】
option: 変換条件

【戻り値】
なし
【メソッド】
void APXA_SetTargetBoxType(int type);

【機能】
ターゲットボックスの種別を設定します。

【パラメータ】
type: ターゲットボックスの種類

【戻り値】
なし
【メソッド】
void APXA_SetStartPage(int pageNo);

【機能】
変換する先頭のページ番号を指定します。
このメソッドを呼ばない場合は、1ページ目から変換します。

【パラメータ】
pageNo: 開始ページ番号

【戻り値】
なし
【メソッド】
void APXA_SetEndPage(int pageNo);

【機能】
変換する最終のページ番号を指定します。
このメソッドを呼ばない場合は、PDFの最終ページまで変換します。

【パラメータ】
pageNo: 最終ページ番号

【戻り値】
なし
【メソッド】
APXA_ERROR APXA_Convert(inputStream);

【機能】
PDFファイルをAntenna House PDFXMLに変換します。

【パラメータ】
std::istream *inputStream 入力PDFストリーム(入力:必須)

【戻り値】
APXA_ERROR

APXA_Converterクラスの使用例

/**
* APXA_Converter()を使用して、PDFをAntenna House PDFXMLに変換します。
*/
void execute()
{
    // APXA_Converter()クラスを作成します。
    APXA_ANALYZER::APXA_Converter *converter = new APXA_ANALYZER::APXA_Converter();

    AHString outputFolder = "D:\\OUTFOLDER";
    AHString prefix = "TEST";
    AHString accessPassword = "abc";
    // 出力フォルダを指定します。
    converter->APXA_SetOutFolder(outputFolder);
    // ベースファイル名を指定します。
    converter->APXA_SetBaseName(prefix);

    std::ifstream pdfstream;
    std::istream *inputStream;
    char inputfile[1024] = "d:\\INPUTFOLDER\\test.pdf";
    // 入力ストリームを作成します。
    pdfstream.open(inputfile, std::ios_base::in|std::ios_base::binary);
    if(pdfstream.good()) {
        inputStream = new std::istream(pdfstream.rdbuf());
    }
    else {
        // エラーメッセージを作成します。
        return;
    }
    // パスワードが有れば、パスワードを指定します。
    if (accessPassword.length() != 0)
        converter->APXA_SetPassword(accessPassword);
    int pageCount;
    try {
        // ページ数を取得します。
        pageCount = converter->APXA_GetPageCount(inputStream);
        if (pageCount == 0) {
            // エラーメッセージを作成します。
            return;
        }
        // 変換条件を指定します。
        converter->APXA_SetConversionOption(APXA_ANALYZER::APXA_OPT_UNDERLINEOUT | APXA_ANALYZER::APXA_OPT_NOTTEXTSVG);
        // 開始ページを指定します。
        converter->APXA_SetStartPage(1);
        // 終了ページを指定します。
        converter->APXA_SetEndPage(pageCount);
        // 変換を実行します。
        converter->APXA_Convert(inputStream);
    } catch (const int& error) {
        // エラーメッセージを作成します。
    }
    return;
}

エラーコードAPXA_ERRORの説明

APXA_SUCCESS = 0 正常終了しました。
APXA_OPEN_ERROR = 1 PDFファイルをオープンできません。
APXA_PASSWORD_ERROR = 2 PDFファイルにパスワードが設定されています。
APXA_READ_ERROR = 3 PDFファイルを読めません
APXA_PAGE_ERROR = 4 ページの処理中にエラーが発生しました。
APXA_SECTION_ERROR = 5 セクションの処理中にエラーが発生しました。
APXA_FRAME_ERROR = 6 フレームの処理中にエラーが発生しました。
APXA_PARAGRAPH_ERROR = 7 段落の処理中にエラーが発生しました。
APXA_TEXTLINE_ERROR = 8 テキスト行の処理中にエラーが発生しました。
APXA_TEXT_ERROR = 9 テキストの処理中にエラーが発生しました。
APXA_CELL_ERROR = 10 セルの処理中にエラーが発生しました。
APXA_GRAPHIC_ERROR = 11 線画の処理中にエラーが発生しました。
APXA_TABLE_ERROR = 12 表の処理中にエラーが発生しました。
APXA_ROW_ERROR = 13 表の行の処理中にエラーが発生しました。
APXA_SVG_ERROR = 14 SVGの処理中にエラーが発生しました。
APXA_WRITE_ERROR = 15 AHPDFXML書き込み中にエラーが発生しました。
APXA_OUTFOLDER_ERROR = 16 出力フォルダーが不正です。
APXA_LICENSE_ERROR = 17 ライセンスファイルが不正です。
APXA_OTHER_ERROR = 18 その他のエラーが発生しました。

変換条件の説明

APXA_OPT_ONECHAR = 0x00000001 ahp:runの出力単位を一文字づつに分割します。
一文字毎に、存在範囲(上下左右位置)を知りたい場合に指定してください。
APXA_OPT_CIDOUTPUT = 0x00000002 unicodeだけでなく、キャラクタID(CID)も出力します。
キャラクタIDは、フォントファイルから文字のグリフを取得する場合などに使用します。
APXA_OPT_TABLE_NOT_PUT = 0x00000008 表の解析を行いません。
線画が多い文書で余分な表を作成したくない場合に設定してください。
APXA_OPT_ALL_TEXT_IS_SHAPE = 0x00000010 すべての文字をテキストボックスに変換します。
この変換条件はPowerPointなどへ変換する場合に指定してください。
APXA_OPT_UNDERLINEOUT = 0x00000040 文字の下線を解析します。
この変換条件を指定すると、文字の下に存在する直線を文字の下線属性へ変換します。
APXA_OPT_PICTURENOTOUT = 0x00000080 線画から線画イメージファイルを作成しません。
この変換条件の指定に関係なく、元のPDF中に存在する画像は必ず出力されます。
APXA_OPT_NOTTEXTSVG = 0x00000200 線画領域の四角形の中に存在する文字を線画イメージファイルに出力しません。
この条件が設定されていない場合は、線画領域内に存在するテキストを線画イメージファイルに出力します。
線画イメージファイルの形式は、APXA_OPT_CONVERT_EMFの指定の有無によって決まります。
APXA_OPT_CONVERT_EMFが指定されていない場合は、線画イメージファイルの形式はSVGです。
APXA_OPT_CONVERT_EMFが指定された場合は、線画イメージファイルの形式はEMFまたはPNGです。
APXA_OPT_NOTIMAGESVG = 0x00000400 クリッピング付きの画像は、クリッピングせずに元の画像のまま出力します。
この条件が設定されていない場合は、クリッピング付きの画像は、クリッピングして線画イメージファイルに出力します。
線画イメージファイルの形式は、APXA_OPT_CONVERT_EMFの指定の有無によって決まります。
APXA_OPT_CONVERT_EMFが指定されていない場合は、線画イメージファイルの形式はSVGです。
APXA_OPT_CONVERT_EMFが指定された場合は、線画イメージファイルの形式はEMFまたはPNGです。
APXA_OPT_CONVERT_EMF = 0x00000800 線画をEMFに変換します。
複数の線画をまとめられる場合は、まとめてPNGに変換します。
PDFのページ中に表が存在する場合などは、まとめてPNGに変換することはしません。
この条件が設定されていない場合は、線画はSVG形式に変換されます。
APXA_OPT_ORIGINAL_CHAR_ROTATE = 0x00002000 ahp:fontのahp:rotatioへ、常に文字の回転角度を出力します。
APXA_OPT_ORIGINAL_IMAGE_OUT = 0x00004000 線画イメージに含まれているオリジナル画像を出力します。
P2X_OPT_INVISIBLETEXT_NOT_OUT = 0x00008000 目に見えないテキストは出力しません。
APXA_OPT_CELLLINE_FROM_FILL_RECT = 0x00040000 塗りつぶし矩形をセルの罫線とみなして表の解析を行います。
APXA_OPT_STRICT_JUDGEMENTS = 0x00080000 セルの罫線として採用する線の交わりの判断を厳しくします。
<<戻る

ターゲットボックスの種類

APXA_TARGETBOX_DEFAULT = 0 ページ上の座標は、デフォルトで PDF の CropBox を使用します。
指定されたターゲットボックスが PDF から取得できる場合、 ターゲットボックスの座標を使用して出力します。
APXA_TARGETBOX_MEDIABOX = 1 PDF の MediaBox の値で出力します。
APXA_TARGETBOX_CROPBOX = 2 PDF の CropBox の値で出力します。
APXA_TARGETBOX_TRIMBOX = 3 PDF の TrimBox の値で出力します。
APXA_TARGETBOX_BLEEDBOX = 4 PDF の BleedBox の値で出力します。
APXA_TARGETBOX_ARTBOX = 5 PDF の ArtBox の値で出力します。。
<<戻る

著作権の表示

本ドキュメントおよび製品に記載の商品名は各社の商標または登録商標です。
Copyright c 2015-2024 Antenna House, Inc. All rights reserved.


Copyright c 2015-2024 Antenna House, Inc. All rights reserved.
Antenna House is a trademark of Antenna House, Inc.