7. 付属APIの詳細

7.1. プリンター選択処理

7.1.1. プリンターの選択:SelectPrinterの仕様

プリンター選択関数「SelectPrinter」は、出力先指定や設定編集の処理をどのプリンターに対して行うのかを決める関数です。選択対象は、モデル名が「Antenna House PDF Driver 8.0」であるプリンターです。

複数のスレッドあるいは複数のプロセスから同時にPDF Driver V8.0で印刷処理をさせる場合、プログラムのコードでは、印刷実行前に「SelectPrinter」をコールするようにしてください。

SelectPrinterの仕様

SelectPrinter(NULL)

引数がNULLの場合は、プリンター名「Antenna House PDF Driver 8.0」を選択します。

SelectPrinter(L"")

引数が空文字列の場合は、SelectPrinter側で処理が可能な状態にあるプリンターを選択します。プリンターが見つからない場合は、エラーになります。プリンターの選択に成功した場合は、「GetSelectedPrinter」によりプリンター名を取得することができます。

SelectPrinter("[プリンター名]")

引数に名称が指定されている場合、すでにその名称のプリンターが存在するときにはそれを選択状態にします。存在しないときには、SelectPrinter側でプリンターを作成します。

プログラム側でプリンターを作成する場合は、プログラム自体、あるいは、プログラムを実行するユーザーに、プリンターが作成可能な権限が必要となります。

SelectPrinter側でプリンターを作成した場合、印刷終了後にそのプリンターは削除されます。

プログラム側でSelectPrinterの呼び出しが行われなかった場合

「SelectPrinter(L"")」と同じ仕様で動作します。

プリンターが「選択状態」になると、他のプロセスやスレッドからはそのプリンターを付属APIでは使用できなくなりますが、付属API以外からは使用できます。

付属APIからプリンターを利用するプログラムが動作している間は、付属API以外からそのプリンターが使用されないようにしてください。

7.1.2. SelectPrinterのエラーコード「4」について

  • 同じプリンター名をSelectPrinterするスレッドが複数動作しているときに発生した場合、他のスレッドの処理が終了するのを待機するようにしてください。
  • SelectPrinterに空文字列を指定するスレッドが複数動作しているときに発生した場合、モデル名「Antenna House PDF Driver 8.0」のプリンターの複製を追加してください。

7.1.3. 選択状態の解放:ReleasePrinter

プログラムで使用が終わったプリンターは、「ReleasePrinter」で選択状態を解放します。「ReleasePrinter」は、デストラクタで呼ばれるよう設計されています。

「SelectPrinter」が作成したプリンターは、自動的に削除されます。

7.2. サンプルコード

サンプルコードを用意しました。ご参考ください。

サンプルコードの場所:付属API\SampleCode

出力先指定APIと設定編集APIのC++サンプルプロジェクトです。

exeの引数に指定した入力ファイルと同じ場所にAntenna House PDF Driver 8.0を使ってPDFを出力します。「c:\透かし付き(社外秘).printSetting3」を読み込み、文書情報と透かしの設定編集を行っています。

Microsoft Visual Studio 2015 C++ コンソールアプリケーションプロジェクトです。

出力先指定APIのC#サンプルプロジェクトです。

PrintDocument()を利用して、Antenna House PDF Driver 8.0で印刷を行います。

Microsoft Visual Studio 2015 C# コンソールアプリケーションプロジェクトです。

7.3. プログラミングの注意事項

出力先指定APIや設定編集APIによって指定されたPDFの出力先や印刷設定を印刷処理で正しく反映させるためには、印刷が終了するまでそれぞれのクラスのインスタンスが有効でなければなりません。

印刷終了後は、インスタンスを破棄し、印刷処理のプロセスを終了することができます。

7.4. 出力先指定API

7.4.1. Namespace名とClass名

インターフェース

名称

C++

Namespace

DrvSet

Class

PDFDriverSetting

.NET

Namespace

AntennaHouse.PDFDriver.DS80

Class

PDFDriverSetting

7.4.2. 関数仕様

以下は、出力先指定API(C++)の関数仕様です。

7.4.2.1.setOutputPDFFilenameFullPath

定義

bool setOutputPDFFilenameFullPath(const char* path)

bool setOutputPDFFilenameFullPath(const wchar_t* path)

引数

path:出力するPDFファイルのフルパス名

戻り値

true=成功 / false=失敗

説明

出力先となるPDFファイルパスを指定します。UNC(Universal Naming Convention)パス名での指定も可能です。

PDFへ出力する際、指定されたファイル名で上書きするためプログラム側でファイルの存在チェックが必要です。

また、出力先フォルダは存在していなければなりません。

7.4.2.2.setOutputPDFFilenameClear

定義

bool setOutputPDFFilenameClear()

引数

なし

戻り値

true=成功 / false=失敗

説明

指定した出力先PDFファイルパスをクリアします。

7.4.2.3.setSettingsFile

定義

bool setSettingsFile(const char* settingsFile)

bool setSettingsFile(const wchar_t* settingsFile)

引数

settingsFile :PDF出力設定ファイル名(フルパス名またはパスなしのファイル名)

戻り値

true=成功 / false=失敗

説明

PDF出力設定ファイル名を指定します。パスを含まないファイル名が指定された場合は、

1) PDF Driver V8.0のインストールフォルダ\Settings

2)「CSIDL_APPDATA」で取得されるフォルダ\

AntennaHouse\PDF_Driver\<パージョン>\

CustomSettings

の順に検索します。

7.4.2.4.setSettingsFileClear

定義

bool setSettingsFileClear()

引数

なし

戻り値

true=成功 / false=失敗

説明

指定したPDF出力設定ファイル名をクリアします。

7.4.2.5.setOpenPDF

定義

bool setOpenPDF(bool openFlag)

引数

openFlag :rue=オープンする / false=オープンしない

戻り値

true=成功 / false=失敗

説明

PDF出力後にPDF表示するかどうかを指定します。

本関数による設定は、印刷設定の「作成後PDFを表示」の設定値より優先されます。

7.4.2.6.SelectPrinter

定義

int SelectPrinter(const wchar_t* printerName)

引数

printerName:

・NULL:「Antenna House PDF Driver 8.0」プリンターを選択

・空文字列:処理可能状態にあるプリンターを自動で選択

・プリンター名(NULL文字終端で32文字(= 64バイト)まで)

戻り値

AHPD_ErrorCode.h を参照してください。

説明

PDFの出力先指定を行うプリンターを選択します。

7.4.2.7.ReleasePrinter

定義

int ReleasePrinter()

引数

なし

戻り値

AHPD_ErrorCode.h を参照してください。

説明

SelectPrinterで選択したプリンターを解放し、他のプロセスやスレッドでも使えるようにします。

この関数は、デストラクタで呼ばれます。

7.4.2.8.GetSelectedPrinter

定義

int GetSelectedPrinter(wchar_t* buf, size_t bufsizeInWORD)

引数

buf:選択されているプリンター名が格納されるバッファ。

bufsizeInWORD:bufのバッファ文字数。最低32文字(=64バイト)確保してください。

戻り値

AHPD_ErrorCode.h を参照してください。

説明

SelectPrinterで選択したプリンター名をバッファ(buf)に返します。

7.4.3. APIによる出力先指定と「同名のファイルがある場合」の設定について

印刷設定の「一般」タブに「同名のファイルがある場合」の設定があります。

出力先にすでに同じ名前のファイルが存在する場合の動作オプションです。

Please enter alt text.

出力先指定APIで出力先を指定し印刷処理を行うとき、「同名のファイルがある場合」の設定値に関係なく、出力先に同名ファイルが存在する場合は上書き動作をします。

上書きできない場合、エラーとなります。

7.5. 設定編集API

7.5.1. Namespace名とClass名

インターフェース

名称

C++

Namespace

PDFSetFileModify

Class

CEditSettingFile

7.5.2. 関数仕様

以下は設定編集APIの関数仕様の説明です。APIリファレンスも合わせてご参考ください。

7.5.2.1.load

定義

int load(const char* settingFile)

int load(const wchar_t* settingFile)

引数

settingFile:読み込む出力設定ファイル名(フルパス名またはパスなしのファイル名)

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

指定された出力設定ファイルを読み込みます。パスを含まないファイル名が指定された場合は、

1) PDF Driver V8.0のインストールフォルダ\Settings

2)「CSIDL_APPDATA」で取得されるフォルダ\

AntennaHouse\PDF_Driver\<パージョン>\

CustomSettings

の順に検索します。

7.5.2.2.save

定義

int save()

引数

なし

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

編集した設定内容をロードした出力設定ファイル名で上書き保存します。

7.5.2.3.saveAs

定義

int saveAs(const char* fileName)

int saveAs(const wchar_t* fileName)

引数

fileName:保存先の設定ファイルのフルパス名

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

編集した設定内容に名前を付けて保存します。

7.5.2.4.getCommon

定義

int getCommon(PDFCommon * pdfCommonSet)

引数

pdfCommonSet:取得した値を格納するための「一般」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「一般」設定を取得します。

PDFCommon構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.5.setCommon

定義

int setCommon(const PDFCommon * pdfCommonSet)

引数

pdfCommonSet:格納する「一般」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「一般」設定を格納します。

PDFCommon構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.6.getPDFVersion

定義

int getPDFVersion(PDFVersion* value)

引数

value:取得した値を格納するための「PDFバージョン」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「PDFバージョン」設定を取得します。

PDFVersion構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.7.setPDFVersion

定義

int setPDFVersion(const PDFVersion* value)

引数

value:格納する「PDFバージョン」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「PDFバージョン」設定を格納します。

PDFVersion構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.8.getCompress

定義

int getCompress(PDFCompress * pdfCompressSet)

引数

pdfCompressSet:

取得した値を格納するための「圧縮」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「圧縮」設定を取得します。

PDFCompress構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.9.setCompress

定義

int setCompress(const PDFCompress * pdfCompressSet)

引数

pdfCompressSet:格納する「圧縮」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「圧縮」設定を格納します。

PDFCompress構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.10.getFont

定義

PDFFont* getFont()

引数

なし

戻り値

「フォント」設定の構造体ポインタ

説明

「フォント」設定を取得します。

取得したポインタや「フォント」設定内のポインタを上位で開放する必要はありません。

PDFFont構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.11.setFont

定義

int setFont(const PDFFont * pdfFontSet)

引数

pdfFontSet:格納する「フォント」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「フォント」設定を格納します。

PDFFont構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.12.getSecurity

定義

int getSecurity(PDFSecurity * pdfSecuritySet)

引数

pdfSecuritySet:取得した値を格納するための「セキュリティ」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「セキュリティ」設定を取得します。

PDFSecurity構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.13.setSecurity

定義

int setSecurity(const PDFSecurity * pdfSecuritySet)

引数

pdfSecuritySet:格納する「セキュリティ」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「セキュリティ」設定を格納します。

PDFSecurity構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.14.getWaterMark

定義

int getWaterMark(PDFWaterMark * pdfWaterMarkSet)

引数

pdfWaterMarkSet:取得した値を格納するための「透かし」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「透かし」設定を取得します。

PDFWaterMark構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.15.setWaterMark

定義

int setWaterMark(const PDFWaterMark * pdfWaterMarkSet)

引数

pdfWaterMarkSet:格納する「透かし」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「透かし」設定を格納します。

PDFWaterMark構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.16.getOpenMode

定義

int getOpenMode(PDFOpenMode * pdfOpenModeSet)

引数

pdfOpenModeSet:取得した値を格納するための「開き方」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「開き方」設定を取得します。

PDFOpenMode構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.17.setOpenMode

定義

int setOpenMode(const PDFOpenMode * pdfOpenModeSet)

引数

pdfOpenModeSet:格納する「開き方」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「開き方」設定を格納します。

PDFOpenMode構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.18.getInformation

定義

int getInformation(PDFInformation * pdfInformationSet)

引数

pdfInformationSet:取得した値を格納するための「情報」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「情報」設定を取得します。

PDFInformation構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.19.setInformation

定義

int setInformation(const PDFInformation * pdfInformationSet)

引数

pdfInformationSet:格納する「情報」設定の構造体ポインタ

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

「情報」設定を格納します。

PDFInformation構造体定義は「PDFTableSet.h」を参照してください。

7.5.2.20.getName

定義

int getName(wchar_t* buf, size_t bufsize)

引数

buf:取得した設定表示名を格納する文字列変数のポインタ

bufsize :bufのサイズ。WORD単位でNULL文字分を含めてください。

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

印刷設定ダイアログ上で表示される設定の表示名を取得します。設定ファイル名とは一致しません。表示名がない場合は空文字列が取得されます。

7.5.2.21.setName

定義

int setName(const wchar_t* value)

引数

value:設定する設定表示名の文字列変数のポインタ。終端はNULL文字にしてください。

指定可能な文字数は、UNICODEで100文字(200バイト)までです。以降は切り捨てられます。

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

印刷設定ダイアログ上で表示される設定の表示名を指定します。設定ファイル名とは一致しません。ファイル名に使用できない文字や記号の指定が可能です。

プログラムでsetNameを行わない場合、あるいは、setNameで空文字列やNULLを指定した場合は、印刷設定ダイアログ上では拡張子を除く設定ファイル名で表示されます。

7.5.2.22.initSetting

定義

int initSetting()

引数

なし

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

設定内容を規定値に戻します。

7.5.2.23.sendToDriver

定義

int sendToDriver ()

引数

なし

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

設定内容をPDF Driver V6へ渡します。

設定内容を印刷処理で正しく反映させるためには、印刷が終了するまでsendToDriverを行ったCEditSettingFileのインスタンスが有効でなければなりません。

PDF Driverへ渡した設定内容は、PDF Driverでの印刷後、本クラス消滅後、もしくはclearSettingsメソッド呼出し後にクリアされます。

7.5.2.24.clearSettings

定義

int clearSettings ()

引数

なし

戻り値

エラーコード:Settingerror.hを参照してください。

0=正常

説明

PDFDriver V6へ渡した設定内容をクリアします。

7.5.2.25.SelectPrinter

定義

int SelectPrinter(const wchar_t* printerName)

引数

printerName:

・NULL:「Antenna House PDF Driver 8.0」プリンターを選択

・空文字列:処理可能状態にあるプリンターを自動で選択

・プリンター名(NULL文字終端で32文字(= 64バイト)まで)

戻り値

AHPD_ErrorCode.h を参照してください。

説明

印刷設定編集を行うプリンターを選択します。

7.5.2.26.ReleasePrinter

定義

int ReleasePrinter()

引数

なし

戻り値

AHPD_ErrorCode.h を参照してください。

説明

SelectPrinterで選択したプリンターを解放し、他のプロセスやスレッドでも使えるようにします。

この関数は、デストラクタで呼ばれます。

7.5.2.27.GetSelectedPrinter

定義

int GetSelectedPrinter(wchar_t* buf, size_t bufsizeInWORD)

引数

buf:選択されているプリンター名。入力値は無視されます。

bufsizeInWORD:bufのバッファ文字数。最低32文字(=64バイト)確保してください。

戻り値

AHPD_ErrorCode.h を参照してください。

説明

SelectPrinterで選択したプリンター名をバッファ(buf)に返します。

7.5.2.28.getNotificationID

定義

int getNotificationID(uintptr_t* id)

引数

id:識別番号を格納する変数へのポインタ

戻り値

EDIT_PARAM_ERR(0x130) = 引数エラー

その他の0以外の値 = その他のエラー

0 = 正常

説明

印刷の開始や終了を通知するための識別番号を取得します。

7.5.2.29.setNotificationID

定義

int setNotificationID(uintptr_t id)

引数

id:通知を受け取るさいの識別番号

0 = 通知は行わない

0xFFFFFFFF、0xFFFFFFFFFFFFFFFF(64bitのみ) = GetCurrentThreadId()の値を識別番号とする

戻り値

EDIT_PARAM_ERR(0x130) = 引数エラー

その他の0以外の値 = その他のエラー

0 = 正常

説明

印刷の開始や終了を通知するための識別番号を設定します。

複数の印刷ジョブで同じ設定を使用するとidが重なります。印刷ジョブごとにidを変更、再設定してください。

識別番号設定を64bitプロセスで行い、Windowsメッセージ受信を32bitプロセスで行うと、識別番号の上位32bitが欠落します。

7.5.2.30.getNotificationMessageString

定義

int getNotificationMessageString (messageReason reason, wchar_t* buf, size_t bufsize)

引数

reason:文字列を取得するWindowsメッセージの種類。次の4種類からひとつを指定します。

num messageReason{

PrintStart = 0, // 印刷開始

PageStart = 1, // ページ開始

PageEnd = 2, // ページ終了

PrintEnd = 3, // 印刷終了

};

buf:文字列を格納する変数のポインタ

bufsize:bufのサイズ。WORD単位でNULL文字分を含めてください。

戻り値

EDIT_PARAM_ERR(0x130) = 引数エラー

EDIT_MEMORY_ERR(0x140) = 文字列処理エラー

その他の0以外の値 = その他のエラー

0 = 正常

説明

setNotificationMessageString()で指定された文字列を取得します。

7.5.2.31.setNotificationMessageString

定義

int setNotificationMessageString (messageReason reason, const wchar_t* str)

引数

reason:文字列を設定するWindowsメッセージの種類。次の4種類からひとつを指定します。

num messageReason{

PrintStart = 0, // 印刷開始

PageStart = 1, // ページ開始

PageEnd = 2, // ページ終了

PrintEnd = 3, // 印刷終了

};

str:Windowsメッセージを受信するための文字列。NULL終端でNULLを含み31文字以内。超過する場合はエラーになります。

空文字列(L"")、NULLが指定された場合、指定がない場合は、メッセージは送信されません。

戻り値

EDIT_PARAM_ERR(0x130) = 引数エラー

EDIT_MEMORY_ERR(0x140) = 文字列処理エラー

その他の0以外の値 = その他のエラー

0 = 正常

説明

印刷の開始や終了のWindowsメッセージを受け取るための文字列を指定します。この関数で指定した文字列でRegisterWindowMessageW()を行い、Windowsメッセージを受信することで、印刷の開始や終了を認識することができます。

7.5.3. 印刷開始終了通知のしくみ

APIでは、次の通知を受け取ることができるように設定することができます。

通知の種類

内容

印刷開始

ファイルの印刷開始

ページ開始

ページの印刷開始

ページ終了

ページの印刷終了

印刷終了

ファイルの印刷終了

設定編集APIのsetNotificationMessageString()で指定した文字列でRegisterWindowMessageW()を行い、Windowsメッセージを受信します。

受信したメッセージの内容は次の通りです。

WPARAM

32 -63 bit

※64bitのみ

印刷ジョブID

0 - 31 bit

ページ数(ページの開始/終了の場合)

最初のページは0

印刷ジョブID(印刷開始/終了の場合)

LPARAM

設定編集API「setNotificationID」で指定した識別番号

<注意事項>

識別番号設定を64bitプロセスで行い、Windowsメッセージ受信を32bitプロセスで行うと、識別番号の上位32bitが欠落します。