7. クラス

7.1. クラス名

クラス名はPDFDocumentです。

7.2. メソッド

7.2.1. ストリームオープン

bool openDocument(std::istream& stream, const wchar_t* passWord=NULL, DWORD loadStart=0,

const wchar_t* appName=NULL, const wchar_t* keyName=NULL, const wchar_t* value=NULL);

bool OpenDocument(Stream stream, String passWord, long loadStart, String appName, String keyName,

String value); (.Net)

引数:

stream:PDFデータストリーム

passWord:パスワード

loadStart:2ページ目以降の解析開始までの時間(msec)。

appName:アプリケーション名

keyName:アプリケーション辞書キー名

value:アプリケーション辞書キー値

戻り値:

true 成功

false失敗 失敗した場合、エラーコードを検査します。

エラーコードAvsViewerSDK::PDFDocument::ERROR_PASSWORDは、PDFにパスワードの設定があり、指定したパスワードが一致しないことを示します。パスワードの入力を行い、再度openDocument()を呼び出します。

解説:

  • ストリームを全て読み込みます。streamは、オープン終了後必要ありません。
  • 1ページ目のデータを解析し戻ります。2ページ目以降は、スレッドを作成しloadStart時間Sleep()しページデータを解析します。loadStartが0の場合は、最初のページ表示drawPage()が呼ばれたときにスレッドを作成しページデータの解析を開始します。
  • 表示せず印刷を行う場合、loadStartを指定することで解析しながら、印刷できます。また、loadStartが0でも印刷時に解析を行います(同じスレッド)。
  • 解析済みのページ数はgetLoadCount()で取得することができます。
  • 200ページを超えるPDFは100ページまで読み込み、残りは参照時に読み込みます。読み込んだページ数が200を超えた場合、古い参照ページから廃棄し、次回参照時に再度読み込みを行います。このページ数はsetLoadPageCount()で変更できます。
  • 廃棄されるのはページのデータのみで、ページから参照されるフォントや画像などは一度読み込まれると参照されるページが廃棄されても読み込まれたままとなります。
  • アプリケーション名、キー名、キー値を指定すると、一致するForm XObjectを非表示にします。

7.2.2. ファイルオープン

bool openDocument(const wchar_t* fileName, const wchar_t* passWord=NULL,

DWORD loadStart=0, const wchar_t* appName=NULL, const wchar_t* keyName=NULL,

const wchar_t* value=NULL);

bool OpenDocument(String fileName, String passWord, long loadStart, String appName,

String keyName, String value); (.Net)

引数:

fileName:PDFファイル名

passWord:パスワード

loadStart:2ページ目以降の読み込み開始までの時間(msec)。

appName:アプリケーション名

keyName:アプリケーション辞書キー名

value:アプリケーション辞書キー値

戻り値:

true 成功

falseの場合はストリームオープンと同様にエラーを検査します。

解説:

  • ファイルをオープンし、1ページ目のデータを読み込み戻ります。
  • 1ページ目のデータを解析し戻ります。2ページ目以降は、スレッドを作成しloadStart時間Sleep()しページデータを解析します。loadStartが0の場合は、最初のページ表示drawPage()が呼ばれたときにスレッドを作成しページデータの解析を開始します。
  • 表示せず印刷を行う場合、loadStartを指定することで解析しながら、印刷できます。また、loadStartが0でも印刷時に解析を行います(同じスレッド)。
  • 解析済みのページ数はgetLoadCount()で取得することができます。
  • 最後のページの読み込みが終了するとファイルをクローズします。その間ファイルの変更はできません。
  • 200ページを超えるPDFは100ページまで読み込み、残りは参照時に読み込みます。読み込んだページ数が200を超えた場合、古い参照ページから廃棄し、次回参照時に再度読み込みを行います。このページ数は、setLoadPageCount()で変更できます。
  • 200ページを超える文書の場合ファイルはオープンしたままになります。オープンしたままにしたくない場合はストリームオープンを使用してください。
  • 廃棄されるのはページのデータのみで、ページから参照されるフォントや画像データは一度読み込まれると参照されるページが廃棄されても読み込まれたままとなります。
  • アプリケーション名、キー名、キー値を指定すると、一致するForm XObjectを非表示にします

7.2.3. クローズ

void closeDocument();

void CloseDocument(void); (.Net)

戻り値:

なし

7.2.4. 読み込みスレッド開始

void startLoadThread();

void StartLoadThread(void); (.Net)

解説:

後から読み込みスレッドを開始する場合に呼びます。openDocument()でloadStartに0を指定し、表示も行わない場合にこのメソッドで開始を指定できます。

既に読み込みスレッドがある場合は何もせず戻ります。

7.2.5. オープンされているか

bool isOpen() const;

property bool IsOpen (.Net) 読み取りのみ

戻り値:

true オープン済み。

7.2.6. 内容のコピー可能か

bool isEnableCopyContents() const;

property bool IsEnableCopyContents (.Net) 読み取りのみ

戻り値:

true コピー可能

解説:

PDFファイルにコピー不可の指定があっても、イメージ作成機能(makeXXXPage)は動作します。PDFファイルに従ったアクセス制御はアプリケーションの責任で行ってください。

7.2.7. 印刷可能か

bool isEnablePrintout() const;

property bool IsEnablePrintout (.Net)読み取りのみ

戻り値:

true 印刷可能

解説:

PDFファイルが印刷不可の場合、印刷は行えません。

7.2.8. SDKバージョン番号の取得

static int getSDKVersion(wchar_t* buffer, int size);

property String SDKVersion

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。BufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.NET)

7.2.9. PDFバージョンの取得

int getVersion(wchar_t* buffer, int size) const;

property String Version (.Net)読み取りのみ

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。BufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.NET)

7.2.10. 作成日付の取得

int getCreationDate(wchar_t* buffer, int size) const;

property String CreationDate (.Net)読み取りのみ

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。BufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.NET)

7.2.11. 更新日付の取得

int getModifyDate(wchar_t* buffer, int size) const;

property String ModifyDate(.Net)読み取りのみ

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。BufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.NET)

7.2.12. タイトルの取得

int getTitle(wchar_t* buffer, int size) const;

property String Title(.Net)読み取りのみ

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。BufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.NET)

7.2.13. 作成者の取得

int getAuthor(wchar_t* buffer, int size) const;

property String Author(.Net)読み取りのみ

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。BufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.NET)

7.2.14. サブタイトルの取得

int getSubject(wchar_t* buffer, int size) const;

property String Subject(.Net)読み取りのみ

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。BufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.NET)

7.2.15. キーワードの取得

int getKeywords(wchar_t* buffer, int size) const;

property String Keywords(.Net)読み取りのみ

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。BufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.NET)

7.2.16. アプリケーションの取得

int getCreator(wchar_t* buffer, int size) const;

property String Creator(.Net)読み取りのみ

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。BufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.NET)

7.2.17. PDF変換の取得

int getProducer(wchar_t* buffer, int size) const;

property String Producer(.Net)読み取りのみ

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。BufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.NET)

7.2.18. ページ数の取得

int getPageCount() const;

property int PageCount(.Net)読み取りのみ

戻り値:

ページ数

7.2.19. 解析済みページ数の取得

int getLoadCount() const;

property int LoadCount(.Net)読み取りのみ

戻り値:

解析済みページ数

解説:

内部で解析済みページ数を返します。このページはすぐに表示することができます。

解析済みでないページも表示できますが、表示時に解析を行います。

7.2.20. ページサイズの取得

SIZE getPageSize(int pageNo) const;

AvsSize GetPageSize(int pageNo);(.Net)

戻り値:

ページサイズ(単位:TWIP)

7.2.21. ページの表示

void drawPage(int pageNo, HDC hdc, const POINT* dispOrg, float scale, bool drawBg) const;

void DrawPage(int pageNo, IntPtr hdc, AvsPoint dispOrg, float scale, bool drawBg); (.Net)

void drawScalingPage(int pageNo, HDC hdc, const POINT* dispOrg, float scaleH, float scaleV, bool drawBg) const;

void DrawScalingPage(int pageNo, IntPtr hdc, AvsPoint dispOrg, float scaleH, float scaleV, bool drawBg); (.Net)

void drawPage(int pageNo, HDC hdc, const POINT* dispOrg, float scale, bool drawBg, bool drawResult) const;

void DrawPage(int pageNo, IntPtr hdc, AvsPoint dispOrg, float scale, bool drawBg, bool drawResult); (.Net)

void drawScalingPage(int pageNo, HDC hdc, const POINT* dispOrg, float scaleH, float scaleV, bool drawBg, bool drawResult) const;

void DrawScalingPage(int pageNo, IntPtr hdc, AvsPoint dispOrg, float scaleH, float scaleV, bool drawBg, bool drawResult); (.Net)

引数:

pageNo:表示ページ番号(1オリジン)

hdc:Windowデバイスコンテキスト

dispOrg:表示オフセット(デバイス単位。例:デバイス解像度 600 dpiの場合、100 ドットは

デバイス上で100/600 inch = 1/6 inch = 25.4/6 mm の計算になります)

scale:表示倍率(1.0f == 100%)

drawBg:true バックグラウンドも描画

scaleH:水平方向表示倍率(1.0f == 100%)

scaleV:垂直方向表示倍率(1.0f == 100%)

drawResult:true検索結果を表示する

解説:

表示後スレッドを作成し、ページ読み込み処理を開始します。

印刷だけの目的では、スレッドは作成されません。

7.2.22. リモートデスクトップ表示モードの設定

void setRemoteDesktopDisplayMode(bool remote);

property bool RemoteDesktopDisplayMode (.Net)

引数:

remote:trueを指定するとリモートデスクトップ用の表示を行う

解説:

リモートデスクトップではGdiPlusで直接表示すると、きれいな描画を得られません。リモートデスクトップの場合、ビットマップを作成し、ディスプレイに転送することで、欠けることのない表示を行います。

既定値はリモートデスクトップ環境ではtrueに設定されています。それ以外はfalse です。

drawPage()にディスプレイのデバイスコンテキストが指定された場合処理します。

その他のデバイスコンテキストには適用されません。

7.2.23. リモートデスクトップ表示モードか問い合わせる

bool isRemoteDesktopDisplayMode() const;

property bool RemoteDesktopDisplayMode (.Net)

戻り値:

リモートデスクトップ表示モードならtrue

7.2.24. バッファ表示モードの設定

void setBufferDisplayMode(bool buffer);

property bool BufferDisplayMode (.Net)

引数:

buffer:trueを指定するとバッファ表示を行う

解説:

表示イメージをビットマップにコピーし、再表示のときビットマップイメージを使います。

表示する領域が単純な矩形の場合にビットマップを作成します。他のウインドウが上にある場合は作成できません。縦スクロールが起きた場合はビットマップもスクロールしイメージを追加処理します。横スクロールが起きるとビットマップは無効になります。

ビットマップはページ毎に作成します。表示しなくなったページのビットマップは破棄されます。

既定値はtrue です。

drawPage()にディスプレイのデバイスコンテキストが指定された場合処理します。その他のデバイスコンテキストには適用されません。

リモートデスクトップ表示のときも有効です。

7.2.25. バッファ表示モードか問い合わせる

bool isBufferDisplayMode() const;

property bool BufferDisplayMode (.Net)

戻り値:

バッファ表示モードならtrue

7.2.26. 表示バッファの削除

void clearDisplayBuffer(HWND hWnd, int pageNo);

void ClearDisplayBuffer(IntPtr hWnd, int pageNo); (.Net)

引数:

hWnd:削除するウインドウ。NULLなら全てのウインドウ

pageNo:削除するページ。0なら全てのページ

解説:

上位アプリケーションで背景を描画し、背景を変更した場合などに呼び出します。

保存しているビットマップを無効化します。

7.2.27. スムージングが利用できるか問い合わせる

static bool isSmoothingAvailable();

property bool IsSmoothingAvailable (.Net)

戻り値:

スムージングが可能ならtrue

解説:

PDFViewerSDKではGdiplusを利用してスムージング表示を行います。

7.2.28. スムージングの設定

bool setSmoothing(bool text, bool lineart, bool image);

void SetSmoothing(bool text, bool lineart, bool image); (.Net)

引数:

text:文字のスムージング(AntiAlias)を行う

lineart:線画のスムージングを行う

image:イメージのスムージングを行う

戻り値:

再表示が必要ならtrue

解説:

GDI/GDI+の場合に有効です。設定が無い場合のデフォルトは全てtrueです。

変更はいつでも行えます。設定変更し、再表示してください。

isSmoothingAvailable()がfalseの場合は無効です。

V3.0から表示だけでなく、印刷、イメージ作成にも有効になりました。

7.2.29. スムージング設定の取得

void getSmoothing(bool& text, bool& lineart, bool& image);

void GetSmoothing(out bool text, out bol lineart, out bol image); (.Net)

引数:

text:文字のスムージング(AntiAlias)設定

lineart:線画のスムージング設定

image:イメージのスムージング設定

解説:

現在のスムージング設定を取得します。

7.2.30. 文字表示の問い合わせ

bool isCharacterGDI() const;

property bool CharacterGDI (.Net)

戻り値:

文字で表示ならtrue埋め込まれたフォントで表示する場合はfalse

7.2.31. 文字表示の設定

void setCharacterGDI(bool character);

property bool CharacterGDI (.Net)

引数:

character:文字で表示する場合true埋め込まれたフォントで表示する場合はfalse

解説:

文字にフォントが埋め込まれている場合、文字で表示するか埋め込まれたフォントで表示するかを選択できます。

フォントによってはライセンスのため正しく表示できない場合があります。フォントの表示が正しくない場合、文字で表示するように設定します。

文字(コード)が無い場合は埋め込まれたフォントで表示します。

既定値は false です。

7.2.32. Direct2Dを使用するか

bool isDirect2D() const;

property bool Direct2D (.Net)

戻り値:

Direct2Dを使用する場合はtrue 使用しない場合はfalse

7.2.33. Direct2D設定

void setDirect2D(bool direct2D);

property bool Direct2D (.Net)

引数:

Direct2Dを使用する場合はtrue 使用しない場合はfalse

解説:

 表示、画像出力にDirect2Dを使用します。

 trueの場合でも、印刷にはDirect2Dは使用されません。

7.2.34. 注釈表示の問い合わせ

bool getShowAnnotation() const;

property bool ShowAnnotation (.Net)

戻り値:

注釈を表示する場合はtrue 注釈を表示しない場合はfalse

7.2.35. 注釈表示の設定

void setShowAnnotation(bool show);

property bool ShowAnnotation (.Net)

引数:

show:注釈を表示する場合はtrue 注釈を表示しない場合はfalse

解説:

外観ストリームを持つ注釈について、注釈の外観を表示するかを設定します。

外観ストリームを持たない注釈は設定値をtrueにしても表示されません。

PDF表示や画像出力の場合には、注釈フラグのHidden、NoViewフラグが考慮されます。

印刷の場合には Hidden、Printフラグが考慮されます。

既定値は false です。

7.2.36. 高速プレビューモードか

bool getFastPreviewMode() const;

property bool FastPreviewMode (.Net)

戻り値:

高速プレビューモードの場合はtrue そうでない場合はfalse

7.2.37. 高速プレビューモード設定

void setFastPreviewMode(bool preview);

property bool FastPreviewMode (.Net)

引数:

高速プレビューモードを使用する場合はtrue 使用しない場合はfalse

解説:

高速プレビューモードは、レンダリングは低品質ですが通常よりも高速にレンダリングするモードです。高速プレビューモードの設定はPDFをオープンする前に行ってください。オープン後の呼び出しは可能ですが、設定は反映されません。

制限事項:

  • 時間のかかる処理を省くことで通常のモードよりは高速にレンダリングしますが、レンダリング結果の正確性は保証されません。
  • レンダリング結果は改訂版を含むバージョン間で同一になることは保証されません。
  • 現時点では通常のモードと大きな速度の差異はありません。

7.2.38. ウォータマークテキスト設定

void setShowAnnotation(bool show);

property String WatermarkText (.Net)

引数:

text:ウォータマーク文字列

解説:

ウォータマークとして出力する文字列を設定します。’\n’で改行し複数行の文字列を設定することもできます。

7.2.39. ウォータマークテキスト取得

void setWatermarkText(const wchar_t* text);

property String WatermarkText (.Net)

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数

bufferがNULLの場合は必要なバッファの文字数を返す

7.2.40. ウォータマークフォントファミリ設定

void setWatermarkFontFamily(const wchar_t* family);

property String WatermarkFontFamily (.Net)

引数:

family:ウォータマーク表示フォント名

7.2.41. ウォータマークフォントファミリ取得

int getWatermarkFontFamily(wchar_t* buffer, int size) const;

property String WatermarkFontFamily (.Net)

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数

bufferがNULLの場合は必要なバッファの文字数を返す

7.2.42. ウォータマークフォントウエイト設定

void setWatermarkFontWeight(const wchar_t* weight);

property String WatermarkFontWeight (.Net)

引数:

weight:ウォータマークフォントウエイト

解説:

”700”、”bold”などを設定します。

7.2.43. ウォータマークフォントウエイト取得

int getWatermarkFontWeight(wchar_t* buffer, int size) const;

property String WatermarkFontWeight (.Net)

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。BufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.NET)

7.2.44. ウォータマークフォントスタイル設定

void setWatermarkFontStyle(const wchar_t* style);

property String WatermarkFontStyle (.Net)

引数:

style:ウォータマーク表示フォントスタイル

解説:

”italic”を設定します。

7.2.45. ウォータマークフォントスタイル取得

int getWatermarkFontStyle(wchar_t* buffer, int size) const;

property String WatermarkFontStyle (.Net)

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。BufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.NET)

7.2.46. ウォータマーク不透明度設定

void setWatermarkOpacity(const wchar_t* opacity);

property String WatermarkOpacity (.Net)

引数:

opacity:ウォータマーク不透明度

解説:

”0.3”,”50%”などの不透明度を設定します。

7.2.47. ウォータマーク不透明度取得

int getWatermarkOpacity(wchar_t* buffer, int size) const;

property String WatermarkOpacity (.Net)

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。BufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.NET)

7.2.48. 印刷開始

bool startPrint(HDC hdc, const DEVMODEW* devmode, const DOCINFOW* docInfo,

bool paperSelect = true, bool scaling = false) const;

bool StartPrint(IntPtr hdc, IntPtr devmode, IntPtr docInfo,

bool paperSelect); (.Net)

bool StartPrint(IntPtr hdc, IntPtr devmode, IntPtr docInfo,

bool paperSelect, bool scaling); (.Net)

引数:

hdc:プリンタデバイスコンテキスト

devmode:DEVMODE構造体

docinfo:DOCINFO構造体

paperSelect:true PDFのページに合わせて用紙を自動で選択する

false DEVMODE構造体に設定された用紙サイズを使用する

scaling:trueページを用紙に合わせる

戻り値:

true ::StartDoc()に成功した。

解説:

::StartDoc()を呼び出します。成功した場合は、必ずendPrint()またはabortPrint()を呼び出してください

7.2.49. 印刷終了

void endPrint() const;

void EndPrint(void); (.Net)

解説:

::EndDoc()を呼び出し印刷を終了します

7.2.50. 印刷中止

void abortPrint() const;

void AbortPrint(void); (.Net)

解説:

::AbortDoc()を呼び出し印刷を中止します

7.2.51. ページの印刷

void printPage(int pageNo, bool printMark) const;

void PrintPage(int pageNo, bool printMark); (.Net)

引数:

pageNo:印刷するページ番号(1オリジン)

printMark:検索結果を印刷に反映する

解説:

::StartPage()から::EndPage()の処理を行います。

印刷を行うにはstartPrint()を呼び出し成功したならば、印刷したいページを指定しprintPage()を繰り返し呼び出します。最後にendPage()で終了します。

サンプルプログラムも参照してください。

7.2.52. 印刷開始(拡張)

bool startPrintExt(HDC hdc, const DEVMODEW* devmode, const DOCINFOW* docInfo,

bool paperSelect = true, bool fit = false, float scale = 1.0f,

PAPERALIGNH halign = PALIGNH_CENTER,

PAPERALIGNV valign = PALIGNV_CENTER) const;

bool StartPrintExt(IntPtr hdc, IntPtr devmode, IntPtr docInfo,

bool paperSelect, bool fit, float scale,

PARENALIGNH halign, PARENALIGNV valign); (.Net)

bool startPrintExt2(HDC hdc, const DEVMODEW* devmode, const DOCINFOW* docInfo,

bool paperSelect = true,

PAGESCALING pagescaling = PAGESCALING_NONE, float scale = 1.0f,

PAPERALIGNH halign = PALIGNH_CENTER,

PAPERALIGNV valign = PALIGNV_CENTER) const;

bool StartPrintExt2(IntPtr hdc, IntPtr devmode, IntPtr docInfo,

bool paperSelect, PAGESCALING pagescaling, float scale,

PARENALIGNH halign, PARENALIGNV valign); (.Net)

引数:

hdc:プリンタデバイスコンテキスト

devmode:DEVMODE構造体

docinfo:DOCINFO構造体

paperSelect:true PDFのページに合わせて用紙を自動で選択する

false DEVMODE構造体に設定された用紙サイズを使用する

fit:trueページを用紙に合わせる

scale:スケーリング倍率(fitの時は無効)

halign:水平配置

enum PAPERALIGNH {

PALIGNH_LEFT, // 左揃え

PALIGNH_CENTER, // 中央揃え

PALIGNH_RIGHT // 右揃え

};

valign:垂直配置

enum PAPERALIGNV {

PALIGNV_TOP, // 上揃え

PALIGNV_CENTER, // 中央揃え

PALIGNV_BOTTOM // 下揃え

};

pagescaling:ページの拡大/縮小

enum PAGESCALING {

PAGESCALING_NONE, // なし

PAGESCALING_FIT, // 用紙に合わせる

PAGESCALING_SHRINK // 大きいページを縮小

};

戻り値:

true ::StartDoc()に成功した。

解説:

::StartDoc()を呼び出します。startPrint()を参照してください。

アプリケーションが用紙を選択する場合paperSelect=falseとします。SDKは用紙方向のみを設定します。

PDFを用紙の印字領域に合わせて印刷する場合fit=trueとします。

scaleを指定し用紙をはみ出す場合もhalign,valignは有効です。左上、中央、右下を合わせることができます。

7.2.53. GdiPlusでイメージを操作するか問い合わせ

bool isGdiPlusRasterOperation() const;

property bool GdiPlusRasterOperation (.Net)

戻り値:

画像出力においてイメージの変換、縮小化にGdiPlusを使用する場合true

7.2.54. GdiPlusでイメージを操作する設定

void setGdiPlusRasterOperation(bool bUse) const;

property bool GdiPlusRasterOperation (.Net)

戻り値:

bUse:画像出力においてイメージの変換、縮小化にGdiPlusを使用する場合true。

既定値は false です。

7.2.55. BMPの作成

bool makeBmpPage(int pageNo, int dpi, const wchar_t* scale, int height,

IMAGE_COLOR color, const RECT& imageRect, std::ostream& stream, bool printMark)

const;

bool MakeBmpPage(int pageNo, int dpi, String scale, int height, IMAGE_COLOR color,

AvsRect imageRect, Stream stream, bool printMark);

bool makeBmpPage(int pageNo, int dpi, const wchar_t* scale, int height,

IMAGE_COLOR color, const RECT& imageRect, const wchar_t* fileName, bool printMark) const;

bool MakeBmpPage(int pageNo, int dpi, String scale, int height, IMAGE_COLOR color,

AvsRect imageRect, String fileName, bool printMark); (.Net)

bool makeBmpPage(int pageNo, int dpi, const wchar_t* scale, int height,

IMAGE_COLOR color, const RECT& imageRect, IStreamPtr stream, bool printMark)

const;

※上記以外に、引数を省略した関数が利用できます

引数:

pageNo:BMPを作成するページ番号(1オリジン) ※必須

dpi:スケーリング時のDPI値(1以上、1440以下) ※必須。

1440dpiを超える場合1440dpiで処理します。

scale:出力時のスケール文字列。100%以下、”1”==”100%”,”100px”は幅の指定 ※必須

height:出力イメージの最大高さ(Pixel) 、0は高さ指定なし。※オプション(省略時0)

    dpi と scaleから決定された高さが指定値を超える場合、指定値で出力します。

その場合の幅はページのアスペクト比から計算されます。

color:色数 ※省略時 IMAGECOLOR_COLOR

enum IMAGE_COLOR {

IMAGECOLOR_COLOR, // フルカラー

IMAGECOLOR_256COLOR, // 256色カラー

IMAGECOLOR_GRAYSCALE, // グレースケール

IMAGECOLOR_MONOCHROME, // モノクローム

IMAGECOLOR_BLACK // テキスト、線画のハーフトーンなし

};

imageRect:イメージを作成するページ内の領域。空の矩形はページ全体

※省略時、空の矩形(ページ全体)

stream:BMPを出力するストリーム

printMark:検索結果をイメージに反映する ※必須

fileName:出力ファイル名

戻り値:

ファイルがオープンできない、出力に失敗した場合false

注意:

std:ostreamインタフェースはSDKと同じバージョンのコンパイラのみ利用できます。

7.2.56. JPEGの作成

bool makeJpegPage(int pageNo, int dpi, const wchar_t* scale, int height,

IMAGE_COLOR color, int quality, bool progressive, const RECT& imageRect,

std::ostream& stream, bool printMark) const;

bool MakeJpegPage(int pageNo, int dpi, String scale, int height, IMAGE_COLOR color,

int quality, bool progressive, AvsRect imageRect, Stream stream, bool printMark);

(.Net)

bool makeJpegPage(int pageNo, int dpi, const wchar_t* scale, int height,

IMAGE_COLOR color, int quality, bool progressive, const RECT& imageRect,

const wchar_t* fileName, bool printMark) const;

bool MakeJpegPage(int pageNo, int dpi, String scale, int height, IMAGE_COLOR color,

int quality, bool progressive, AvsRect imageRect, String fileName, bool printMark);

(.Net)

bool makeJpegPage(int pageNo, int dpi, const wchar_t* scale, int height,

IMAGE_COLOR color, int quality, bool progressive, const RECT& imageRect,

IStreamPtr stream, bool printMark) const;

※上記以外に、引数を省略した関数が利用できます

引数:

pageNo:JPEGを作成するページ番号(1オリジン) ※必須

dpi:スケーリング時のDPI値(1以上、1440以下) ※必須。1440dpiを超える場合1440dpiで処理します。

scale:出力時のスケール文字列。100%以下、”1”==”100%”,”100px”は幅の指定 ※必須

height:出力イメージの最大高さ(Pixel) 、0は高さ指定なし。※オプション(省略時0)

    dpi と scaleから決定された高さが指定値を超える場合、指定値で出力します。

その場合の幅はページのアスペクト比から計算されます。

※省略時0

color:色数 ※省略時 IMAGECOLOR_COLOR

enum IMAGE_COLOR {

IMAGECOLOR_COLOR, // フルカラー

IMAGECOLOR_256COLOR, // 256色カラー

IMAGECOLOR_GRAYSCALE, // グレースケール

IMAGECOLOR_MONOCHROME, // モノクローム

IMAGECOLOR_BLACK // テキスト、線画のハーフトーンなし

};

quality:JPEG変換品質 ※省略時および1~100以外の場合は 80 として処理します。

progressive:Progressive JPEGを作成する ※省略時 false

imageRect:イメージを作成するページ内の領域。空の矩形はページ全体 ※省略時、空の矩形(ページ全体)

stream:JPEGを出力するストリーム

printMark:検索結果をイメージに反映する ※必須

fileName:出力ファイル名

戻り値:

ファイルがオープンできない、出力に失敗した場合false

注意:

std:ostreamインタフェースはSDKと同じバージョンのコンパイラのみ利用できます。

IMAGECOLOR_MONOCHROME、IMAGECOLOR_BLACKはサポートされません。

指定してもIMAGECOLOR_GRAYSCALEとなります。

7.2.57. PNGの作成

bool makePngPage(int pageNo, int dpi, const wchar_t* scale, int height,

IMAGE_COLOR color, bool interlace, const RECT& imageRect, std::ostream& stream,

bool printMark) const;

bool MakePngPage(int pageNo, int dpi, String scale, int height, IMAGE_COLOR color,

bool interlace, AvsRect imageRect, Stream stream, bool printMark); (.Net)

bool makePngPage(int pageNo, int dpi, const wchar_t* scale, int height,

IMAGE_COLOR color, bool interlace, const RECT& imageRect,

const wchar_t* fileName, bool printMark) const;

bool MakePngPage(int pageNo, int dpi, String scale, int height, IMAGE_COLOR color,

bool interlace, AvsRect imageRect, String fileName, bool printMark); (.Net)

bool makePngPage(int pageNo, int dpi, const wchar_t* scale, int height,

IMAGE_COLOR color, bool interlace, const RECT& imageRect, IStreamPtr stream,

bool printMark) const;

※上記以外に、引数を省略した関数が利用できます

引数:

pageNo:PNGを作成するページ番号(1オリジン)  ※必須

dpi:スケーリング時のDPI値(1以上、1440以下)  ※必須。1440dpiを超える場合1440dpiで処理します。

scale:出力時のスケール文字列。100%以下、”1”==”100%”,”100px”は幅の指定 ※必須

height:出力イメージの最大高さ(Pixel) 、0は高さ指定なし。※オプション(省略時0)

    dpi と scaleから決定された高さが指定値を超える場合、指定値で出力します。

その場合の幅はページのアスペクト比から計算されます。

color:色数 ※省略時 IMAGECOLOR_COLOR

enum IMAGE_COLOR {

IMAGECOLOR_COLOR, // フルカラー

IMAGECOLOR_256COLOR, // 256色カラー

IMAGECOLOR_GRAYSCALE, // グレースケール

IMAGECOLOR_MONOCHROME, // モノクローム

IMAGECOLOR_BLACK // テキスト、線画のハーフトーンなし

};

interlace:Interlace PNGを作成する ※省略時 false

imageRect:イメージを作成するページ内の領域。空の矩形はページ全体 ※省略時、空の矩形(ページ全体)

stream:PNGを出力するストリーム

printMark:検索結果をイメージに反映する ※必須

fileName:出力ファイル名

戻り値:

ファイルがオープンできない、出力に失敗した場合false

注意:

std:ostreamインタフェースはSDKと同じバージョンのコンパイラのみ利用できます。

7.2.58. TIFFの作成

bool makeTiffPage(int startPageNo, int endPageNo, int dpi, const wchar_t* scale,

int height, IMAGE_COLOR color, const RECT& imageRect, std::ostream& stream,

TIFFCOMPRESSION comp, int quality, bool printMark) const;

bool MakeTiffPage(int startPageNo, int endPageNo, int dpi, String scale, int height,

AvsRect imageRect, Stream stream, bool printMark);

bool makeTiffPage(int startPageNo, int endPageNo, int dpi, const wchar_t* scale, int height,

IMAGE_COLOR color, const RECT& imageRect, const wchar_t* fileName,

TIFFCOMPRESSION comp, int quality, bool printMark) const;

bool MakeTiffPage(int startPageNo, int endPageNo, int dpi, String scale, int height,

IMAGE_COLOR color, AvsRect imageRect, String fileName, TIFFCOMPRESSION comp,

int quality, bool printMark); (.Net)

bool makeTiffPage(int startPageNo, int endPageNo, int dpi, const wchar_t* scale, int height,

IMAGE_COLOR color, const RECT& imageRect, IStreamPtr stream,

TIFFCOMPRESSION comp, int quality, bool printMark) const;

※上記以外に、引数を省略した関数が利用できます

引数:

startPageNo:TIFFを作成する開始ページ番号(1オリジン)  ※必須

endPageNo:終了ページ番号 ※必須

dpi:スケーリング時のDPI値(1以上、1440以下)  ※必須。1440dpiを超える場合1440dpiで処理します。

scale:出力時のスケール文字列。100%以下、”1”==”100%”,”100px”は幅の指定 ※必須

height:出力イメージの最大高さ(Pixel) 、0は高さ指定なし。※オプション(省略時0)

    dpi と scaleから決定された高さが指定値を超える場合、指定値で出力します。

その場合の幅はページのアスペクト比から計算されます。

color:色数 ※省略時 IMAGECOLOR_COLOR

enum IMAGE_COLOR {

IMAGECOLOR_COLOR, // フルカラー

IMAGECOLOR_256COLOR, // 256色カラー

IMAGECOLOR_GRAYSCALE, // グレースケール

IMAGECOLOR_MONOCHROME, // モノクローム

IMAGECOLOR_BLACK // テキスト、線画のハーフトーンなし

};

imageRect:イメージを作成するページ内の領域。空の矩形はページ全体 ※必須

stream:TIFFを出力するストリーム

printMark:検索結果をイメージに反映する ※必須

fileName:出力ファイル名

comp:圧縮方法の指定 ※省略時、圧縮なし

enum TIFFCOMPRESSION {

TIFFCOMP_None = 0, // 圧縮なし

TIFFCOMP_LZW, // LZW圧縮

TIFFCOMP_DCT, // JPEG圧縮

TIFFCOMP_Flate, // Flate圧縮

TIFFCOMP_RunLength, // ランレングス

TIFFCOMP_CCITT3, // CCITT G3圧縮

TIFFCOMP_CCITT4 // CCITT G4圧縮

};

quality:JPEG変換品質(圧縮方法がDCT(JPEG)の場合有効) 

※省略時および1~100以外の場合は 80 として処理します。

戻り値:

ファイルがオープンできない、出力に失敗した場合false

注意:

std:ostreamインタフェースはSDKと同じバージョンのコンパイラのみ利用できます。

7.2.59. 検索ページ指定

void setCurrentPage(int pageNo) const;

void SetCurrentPage(int pageNo); (.Net)

引数:

pageNo:検索ページ番号(1オリジン)

解説:

searchTextでの検索位置をpageNoの先頭に設定します。

ページ数より大きな数を指定すると最後のページの最終位置になります。

7.2.60. 検索ページ数の設定

void setSearchPageCount(int count) const;

void SetSearchPageCount(int count); (.Net)

引数:

count:検索ページ数

解説:

searchText,searchAllで検索するページ数を設定します。

0は未設定、ページ終了まで検索します。

7.2.61. 文字列検索

bool searchText(const wchar_t* str, bool ignoreCase, bool ignoreWidth, bool reverse) const;

bool SearchText(String str, bool ignoreCase, bool ignoreWidth, bool reverse); (.Net)

引数:

str:検索文字列

ignoreCase:true大文字小文字を区別しない

ignoreWidth:true全角半角を区別しない

reverse:true上検索

戻り値:

true検索文字列が見つかった

解説:

検索文字列が無い場合、検索状態は変更されません

7.2.62. 全検索

bool searchAll(const wchar_t* str, bool ignoreCase, bool ignoreWidth, bool reverse) const;

bool SearchAll(String str, bool ignoreCase, bool ignoreWidth, bool reverse); (.Net)

引数:

str:検索文字列

ignoreCase:true大文字小文字を区別しない

ignoreWidth:true全角半角を区別しない

reverse:true上検索 (V5.0MR1以降)

戻り値:

true検索文字列が見つかった

解説:

文書全体から文字列を検索します。複数検索される場合もあります。

検索文字列が無い場合、検索状態は変更されません

7.2.63. 次検索

bool searchNext(bool reverse) const;

bool SearchNext(bool reverse); (.Net)

引数:

reverse:true上検索

戻り値:

true検索文字列が見つかった

解説:

文字列検索の場合はsearchText()で検索した位置から次の検索を行います

全検索の場合は検索済み文字列の次の要素へ移動します

7.2.64. 検索状態解除

bool clearSearch() const;

bool ClearSearch(void); (.Net)

戻り値:

true検索状態を解除した。再表示が必要

7.2.65. マーク解除

void clearCurrentMark() const;

void ClearCurrentMark(void); (.Net)

解説:

全検索した現在位置のマークを解除します。

7.2.66. 検索位置取得

int getSearchPosition(RECT& rect, bool bBox=false) const;

int GetSearchPosition(out AvsRect rect, bool bBox); (.Net)

int getSearchPositionRegion(HRGN& hRgn) const;

int GetSearchPositionRegion(out AvsRegion hRgn); (.Net)

引数:

rect:検索文字列矩形を受け取るRECT構造体

bBox:true検索文字列全体の矩形を得る

hRgn:検索文字列リージョン

戻り値:

検索文字列があるページ番号(1オリジン)。0は検索状態ではない

解説:

検索状態にある場合、これらの関数で現在の位置(検索でハイライトされた領域)を取得できます。複数行にまたがる文字列にヒットした場合はこの領域は単純な矩形にならず複数の矩形を合成した領域になります。このような場合、関数によって取得する情報が異なります。

getSearchPositionでは取得する結果は矩形になります。

  • bBoxがtrueの場合はハイライトされた領域全体を含む矩形を取得します。
  • bBoxがfalseの場合は先頭の矩形検索位置の文字列の矩形を取得します。

またgetSearchPositionRegionでは、現在の位置は HRGN型として得られます。検索結果の範囲が複数行にまたがる場合、リージョンは複数の矩形を合成した領域です。取得したhRgnは呼び出し側でDeleteObject()してください。

HRGNはWin32APIに渡すことで描画など使用できます。HRGNや関連するAPIについて [1]を参照してください。HRGNを構成する個々の矩形はRGNDATA構造体から取得することができます。[2] ただし、.NET/.NET Frameworkの場合は対応するAPIがありませんのでP/Invokeなどを利用してWin32 APIでRGNDATAを扱う必要があります。この場合、AvsRect の GetPointer()メソッドで HRGNを取得することができます。

参考URL

[1] https://learn.microsoft.com/en-us/windows/win32/gdi/regions

[2] https://learn.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-rgndata

7.2.67. ページの検索結果取得

HRGN getPageSearchRegion(int pageNo) const;

AvsRegion GetPageSearchRegion(int pageNo); (.Net)

引数:

pageNo:取得するページ

戻り値:

検索結果のリージョン

解説:

全検索をしたときの指定ページの検索された文字列のリージョンを取得します。

リージョンは呼び出し側でDeleteObject()してください。

7.2.68. 検索状態かの問い合わせ

bool isSearched() const;

property bool IsSearched (.Net) 読み取りのみ

戻り値:

true検索状態(文字列検索、全検索)

7.2.69. 全検索状態かの問い合わせ

bool isSearchedAll() const;

property bool IsSearchedAll (.Net) 読み取りのみ

戻り値:

true全検索状態

7.2.70. 全検索でマークした個数を得る

int getMarkupCount() const;

property int MarkupCount (.Net) 読み取りのみ

戻り値:

全検索で見つかった個数

7.2.71. 反転色の設定

void setSearchedColor(COLORREF selectText, COLORREF selectBack, COLORREF currentText, COLORREF currentBack) const;

void SetSearchedColor(AvsColor selectText, AvsColor selectBack, AvsColor currentText, AvsColor currentBack); (.Net)

引数:

selectText:検索した文字列の色

selectBack:検索した文字列の背景色

currentText:現在位置の文字列の色

currentBack:現在位置の文字列の背景色

7.2.72. 矩形内テキストの取得

int getTextInRect(int pageNo, const RECT* rect, wchar_t* buffer, int size) const;

String GetTextInRect(int pageNo, AvsRect rect); (.Net)

引数:

pageNo:指定矩形ページ番号(1オリジン)

rect:矩形、NULLの場合はページ全体

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。bufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.Net)

解説:

指定した矩形に完全に含まれるテキストを取得します。

getSearchPositionで取得した矩形を使う場合は、その矩形を1TWIP単位上下左右に拡げた矩形を渡してください。

7.2.73. 全選択設定

bool setSelectAll(bool select) const;

bool SetSelectAll(bool select); (.Net)

引数:

select:全選択状態

戻り値:

以前の状態

7.2.74. 全テキスト取得

int getAllText(wchar_t* buffer, int size) const;

String GetAllText(); (.Net)

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字。bufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.Net)

解説:

全選択状態のテキストを取得します。

setSelectAll(true)に設定して取得します。

読み込み済みページまでのテキストのみ取得できます。

7.2.75. 矩形選択の設定

void setReverseTextRect(int pageNo, const RECT* rect,

COLORREF text=RGB(255,255,255), COLORREF back=RGB(0,0,0)) const;

void SetReverseTextRect(int pageNo, AvsRect rect, AvsColor text, AvsColor back); (.Net)

引数:

pageNo:矩形ページ番号

rect:矩形、NULLは解除

text:文字色

back:背景色

解説:

指定した矩形内の文字列をtext,backの色で表示するよう設定します。

矩形内のテキストはgetTextInRect()で取得することができます。

rectにNULLを指定すると設定を解除します。

表示の優先順位は、全選択状態>矩形選択>検索状態になります。

7.2.76. ページ回転の取得

int getPageRotation(int pageNo) const;

int GetPageRotation(int pageNo); (.Net)

引数:

pageNo:回転を取得するページ番号

戻り値:

ページの回転角度(0, 90, 180, 270)

7.2.77. ページ回転の設定

int setPageRotation(int pageNo, int rotation) const;

int SetPageRotation(int pageNo, int rotation); (.Net)

引数:

pageNo:回転を設定するページ番号

rotation:新しい回転角度(0, 90, 180, 270)

戻り値:

設定されたページの回転角度(0, 90, 180, 270)

解説:

回転を変更し再表示してください。ページの幅、高さは変更されます。

7.2.78. リンク注釈ヒットテスト

LINK_ACTION hitTestAnchor(int pageNo, const POINT& mousePos, RECT* anchorRect) const;

LINK_ACTION HitTestAnchor(int pageNo, AvsPoint mousePos, out AvsRect anchorRect); (.Net)

引数:

pageNo:ヒットテストを行うページ番号

mousePos:マウス位置

anchorRect:アンカー矩形を取得するRECT

戻り値:

マウス位置のリンク注釈アクション

enum LINK_ACTION {

ACTIONTYPE_None = 0, // アクションなし

ACTIONTYPE_GoTo, // Gotoアクション

ACTIONTYPE_GoToR, // GotoRアクション

ACTIONTYPE_Launch, // Launchアクション

ACTIONTYPE_URI // URIアクション

};

7.2.79. リンク注釈内部矩形取得

int getInternalTarget(RECT* targetRect) const;

int GetInternalTarget(out AvsRect% targetRect);

引数:

targetRect:飛び先の矩形を取得するRECT

戻り値:

飛び先のページ番号(0は無効)

解説:

前回のhitTestAnchor()で得られたリンク注釈がPDF内(GoTo)の場合、その飛び先を取得します。

7.2.80. リンク注釈外部ファイル名取得

int getExternalUri(wchar_t* buffer, int size) const;

property String ExternalUri (.Net)

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数

bufferがNULLの場合は必要なバッファの文字数を返す

解説:

前回のhitTestAnchor()で得られたリンク注釈が外部ファイル(GoToR,Launch,URI)の場合、その飛び先のURIを取得します。

GoToR,Launchでファイルが相対指定で、PDFのopen()がファイル名指定の場合、開いているPDFの相対ファイルとして実際のファイル名を返します。

URIの相対指定はPDFのURI辞書の/Baseの指定があればそこからの相対として実際のURIを返します。

簡単なリンク注釈の使い方がサンプルプログラムに実装してあります。参照してください。

7.2.81. デフォルトフォントの設定

void setGenericFont(const wchar_t* script, const wchar_t* genericFont,

const wchar_t* fontname);

void SetGenericFont(String script, String genericFont, String fontname); (.Net)

引数:

script:文字のスクリプト。日本は”ja”

genericFont:genericフォント名。”serif”, “sans-serif”

fontname:フォント名

解説:

PDFにフォントファイルがなく指定されているフォント名が探せない場合、スクリプトごとgenericフォント名に登録されているフォントを使用します。

genericフォント名はPDFフォントデスクリプタのFlagsにSerifが指定されている場合”sefif”、指定されていなければ”sans-serif”になります。

デフォルトでは日本語の”serif”は”MS 明朝”です。これを”MS P明朝”に指定する場合は

setGenericFont(“ja”, “serif”, “MS P明朝”);

とします。

呼び出しはオープンの前に行ってください。

7.2.82. 読み込みページ数の設定

void setLoadPageCount(int count);

property int LoadPageCount (.Net)

引数:

count:メモリに読み込むページ数。初期値200。値範囲:10以上、上限なし。

解説:

メモリに読み込むページ数を設定します。

呼び出しはオープンの前に行ってください。

設定したページ数よりPDFのページ数が多いと、設定したページ数までメモリに持ちます。

ファイル名でオープンした場合はファイルがオープンしたままになります。

オープンしたままにしたくない場合はストリームでオープンしてください。

7.2.83. 読み込みメモリ上限の設定

void setLoadMemoryLimit(DWORD limit);

property UInt32 LoadMemoryLimit

引数:

limit:プロセスヒープメモリの上限。(単位Byte、KB未満切捨て)

   初期値500MB。値範囲:0 以上、上限なし。

解説:

プロセスのヒープメモリの上限を設定します。

呼び出しはオープンの前に行ってください。

プロセスのヒープメモリが設定した値を超えると、読み込みスレッドを打ち切り、そのときのページ数までメモリに保持します。

ファイル名でオープンした場合はファイルがオープンしたままになります。

オープンしたままにしたくない場合はストリームでオープンしてください。

ストリームでオープンする場合、内部のメモリストリームにコピーしますので、ファイルサイズ分のメモリが必要となります。ファイル名でオープンする場合は、ストリームへのコピーは行いませんのでメモリ消費が少なくなります。

7.2.84. テキスト位置の取得

int getPageTextPosition(int pageNo, const POINT& mousePos) const;

int GetPageTextPosition(int pageNo, AvsPoint mousePos); (.Net)

引数:

pageNo:位置を取得するページ番号

mousePos:マウス位置

戻り値:

テキスト位置

解説:

マウス位置のテキスト位置を取得します。

サンプルではOnLButtonDown()で選択開始、終了位置を取得しています。

OnMouseMove()で終了位置を取得、更新し、再描画範囲を設定します。

7.2.85. テキスト範囲の取得

HRGN getPageTextRegion(int pageNo, int start, int end) const;

AvsRegion GetPageTextRegion(int pageNo, int start, int end); (.Net)

HRGN getPageTextRegion(int pageNo, int start, int end, bool encodeV) const;

AvsRegion GetPageTextRegion(int pageNo, int start, int end, bool encodeV); (.Net)

引数:

pageNo:範囲を取得するページ番号

start:選択開始位置

end:選択終了位置

encodeV:trueの場合は縦書きテキスト。falseでは縦書き以外

戻り値:

開始から終了までのテキストのリージョン

解説:

取得したHRGNは呼び出し側でDeleteObject()してください。

ページをまたがる範囲の場合(1ページ目startから2ページ目endなど)、テキスト位置がページの先頭の場合はTEXTPOSITION_FIRSTを、ページ最後の場合はTEXTPOSITION_LASTを指定してください。

getPageTextRegion(1, start, TEXTPOSITION_LAST); // 1ページ目

getPageTextRegion(2, TEXTPOSITION_FIRST, end); // 2ページ目

7.2.86. 位置指定テキスト取得

int getPageTextString(int pageNo, o, int start, int end, wchar_t* buffer, int size) const;

String GetPageTextString(int pageNo, int start, int end); (.Net)

引数:

pageNo:テキストのあるページ番号

start:選択開始位置

end:選択終了位置

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。bufferがNULLの場合は必要なバッファの文字数を返す

取得した文字列 (.Net)

7.2.87. 矩形内テキスト範囲の取得

HRGN getTextRegionInRect(int pageNo, const RECT* rect) const;

AvsRegion GetTextRegionInRect(int pageNo, AvsRect rect); (.Net)

HRGN getTextRegionInRect(int pageNo, const RECT* rect, bool encodeV) const;

AvsRegion GetTextRegionInRect(int pageNo, AvsRect rect, bool encodeV); (.Net)

引数:

pageNo:指定矩形ページ番号(1オリジン)

rect:矩形、NULLの場合はページ全体

encodeV:trueの場合は縦書きテキスト。falseでは縦書き以外

戻り値:

矩形内テキストのリージョン

解説:

取得したHRGNは呼び出し側でDeleteObject()してください。

7.2.88. 矩形内テキスト情報の取得

int getTextInfoInRect(int pageNo, const RECT* rect, TextInfo* buffer, int size) const;

ArrayList GetTextInfoInRect(int pageNo, AvsRect rect); (.Net)

C++

enum {

TI_MAX_TEXT_LEN = 4,

TI_MAX_FONTNAME_LEN = 128

};

enum {

WM_f_isRtlOrBtt = 1 << 0,

WM_f_isVerticalText = 1 << 1, 

WM_f_isBPDirLtrOrBtt = 1 << 2 

};

enum WritingModeEnum {

WM_lr_tb = 0,

WM_rl_tb = WM_f_isRtlOrBtt,

WM_tb_rl = WM_f_isVerticalText,

WM_bt_rl = WM_f_isRtlOrBtt | WM_f_isVerticalText,

WM_lr_bt = WM_f_isBPDirLtrOrBtt,

WM_rl_bt = WM_f_isRtlOrBtt | WM_f_isBPDirLtrOrBtt,

WM_tb_lr = WM_f_isVerticalText | WM_f_isBPDirLtrOrBtt,

WM_bt_lr = WM_f_isRtlOrBtt | WM_f_isVerticalText | WM_f_isBPDirLtrOrBtt

};

class TextInfo {

public:

wchar_t text[TI_MAX_TEXT_LEN];

RECT rect;

int baseline;

int fontSize;

wchar_t fontName[TI_MAX_FONTNAME_LEN];

bool isNewLine;

int writingMode;

bool isVertical;

};

.NET Framework /.NET6 (C#)

public enum AvsWritingMode {

WM_lr_tb = 0,

WM_rl_tb = 1, //WM_f_isRtlOrBtt,

WM_tb_rl = 2, //WM_f_isVerticalText,

WM_bt_rl = 3, //WM_f_isRtlOrBtt | WM_f_isVerticalText,

WM_lr_bt = 4, //WM_f_isBPDirLtrOrBtt,

WM_rl_bt = 5, //WM_f_isRtlOrBtt | WM_f_isBPDirLtrOrBtt,

WM_tb_lr = 6, //WM_f_isVerticalText | WM_f_isBPDirLtrOrBtt,

WM_bt_lr = 7, //WM_f_isRtlOrBtt | WM_f_isVerticalText | WM_f_isBPDirLtrOrBtt

}

public class AvsTextInfo {

public String Text;

public AvsRect Rect;

public int Baseline;

public int FontSize;

public String FontName;

public bool IsNewLine;

public int PageNumber;

public AvsWritingMode WritingMode;

public bool IsVertical;

}

引数:

pageNo:指定矩形ページ番号(1オリジン)

rect:矩形、NULLの場合はページ全体

buffer: 取得したテキスト情報(TextInfoクラス)を格納する配列

size:バッファのサイズ

戻り値:

取得されたサイズ

bufferがNULLの場合は必要なバッファのサイズを返す

解説:

指定ページの指定された矩形内に完全に含まれる文字の情報を取得します。

・フォント名はベースフォント名を取得します。

・文字の矩形、ベースラインは論理座標におけるページの原点に対する位置になります。

・改行位置には、isNewLine=trueである文字情報が含まれます。isNewLine=trueの場合、

TextInfoのその他のメンバー変数は無効です。

・writingModeは文字列の方向です。以下の数値で表されます。方向は PDF Viewer API の座標

系における見かけ上の方向を表します。ページ回転も考慮されます。

 WM_lr_tb (0) 左から右

WM_rl_tb (1) 右から左

 WM_tb_rl (2) 上から下

 WM_bt_rl (3) 下から上

 WM_lr_bt (4) 左から右(WM_lr_tbの上下反転)

 WM_rl_bt (5) 右から左(WM_rl_tbの上下反転)

WM_tb_lr (6) 上から下(WM_tb_rlの左右反転)

 WM_bt_lr (7) 下から上(WM_bt_rlの左右反転)

・isVertical は内部のPDFのフォントが縦書き(tue)用か横書き(false)用かを表します。

必ずしも見かけ上の縦書きか横書きかとは一致しません。

制限事項:

・座標変換により文字に回転や歪み(skew)がある場合は正しい情報が取得できません。

・現在の実装では、テキストのベースラインに一定量変化があるときに改行と判定しています。縦書きや斜めに傾いている場合には正しく機能しません。

・改行位置の判定はPDF仕様では明確に既定されないため、弊社リーダーの実装依存の動作になります。このため、他社のリーダーと同一にはなりません。

・座標変換に0/90/180/270度以外の回転がある場合は文字列の方向が正しく取得できません。

7.2.89. 位置指定テキスト情報の取得

int getPageTextInfo(int pageNo, int start, int end, TextInfo* buffer, int size) const;

※本API は C++ I/Fのみです。

引数:

pageNo:指定矩形ページ番号(1オリジン)

start:選択開始位置

end:選択終了位置

buffer: 取得したテキスト情報(TextInfoクラス)を格納する配列

size:バッファのサイズ

戻り値:

取得されたサイズ

bufferがNULLの場合は必要なバッファのサイズを返す

解説:

指定ページの指定された範囲の文字の情報を取得します。

取得できる情報(AvsTextInfo)について、getTextInfoInRectメソッドの解説を参照ください。

制限事項:

getTextInfoInRectメソッドの制限事項を参照ください。

7.2.90. 矩形内パス情報の取得

int getPagePathInRect(int pageNo, const RECT* rect, PDFPath** list) const;

enum PDFPathOp { // パス生成オペレータ

PathOp_Unknown,

PathOp_m,

PathOp_l,

PathOp_c,

PathOp_v,

PathOp_y,

PathOp_h,

PathOp_re

};

enum PDFPaintOp { // パスペイントオペレータ

PaintOp_Unknown,

PaintOp_S,

PaintOp_s,

PaintOp_f,

PaintOp_F,

PaintOp_f_,

PaintOp_B,

PaintOp_B_,

PaintOp_b,

PaintOp_b_,

PaintOp_n,

PaintOp_W,

PaintOp_W_

};

class PDFSubPath { // sub path クラス

public:

int size; // subpath を構成する点の数

POINT* points; // subpath を構成する点の配列

PDFPathOp pathOp; // subpath のオペレータ

};

class PDFPath { // path クラス

public:

int size; // subpath の数

PDFSubPath* subpaths; // subpath の配列

PDFPaintOp paintOp; // パスペイントオペレータ

int lineWidth; //

};

    ※本API は C++ I/Fのみです。

引数:

pageNo:指定矩形ページ番号(1オリジン)

rect:矩形、NULLの場合はページ全体

path: 取得したパスを格納する配列へのポインタ

戻り値:

取得されたパスの個数

解説:

指定ページの指定された矩形内に完全に含まれるパスをすべて取得します。取得される

パスには実際に描画されるパスだけでなく、クリッピング用のパスなどすべてのパスが

含まれます。

パスがどのように描画されるかは、PDFPathクラスのpaintOpメンバ変数のパスペイントオペレータ(enum PDFPaintOp型)で判定してください。パスペイントオペレータの詳細はISO32000-2の「8.5.3Path-Painting Operators」をご覧ください。

パスは複数のサブパス(PDFSubPathクラス)で構成されます。パスの構成については、ISO32000-2の「8.5.2Path Construction Operators」をご覧ください。

取得されるパス情報はAPI 側でメモリが割り当てられます。メモリの廃棄はアプリケーション側で行ってください。

7.2.91. カラープロファイルの設定

void setOutputColorProfile(std::istream& outputRGBProfile);

void SetOutputColorProfile(Stream outputRGBProfile); (.Net)

void setRGBColorProfile(std::istream& readRGBProfile);

void SetRGBColorProfile(Stream readRGBProfile); (.Net)

void setGrayscaleColorProfile(std::istream& readGrayscaleProfile);

void SetGrayscaleColorProfile(Stream readGrayscaleProfile); (.Net)

void setCMYKColorProfile(std::istream& readCMYKProfile);

void SetCMYKColorProfile(Stream readCMYKProfile); (.Net)

void setOutputColorProfile(const wchar_t* outputRGBProfile);

void SetOutputColorProfile(String outputRGBProfile); (.Net)

void setRGBColorProfile(const wchar_t* readRGBProfile);

void SetRGBColorProfile(String readRGBProfile); (.Net)

void setGrayscaleColorProfile(const wchar_t* readGrayscaleProfile);

void SetGrayscaleColorProfile(String readGrayscaleProfile); (.Net)

void setCMYKColorProfile(const wchar_t* readCMYKProfile);

void SetCMYKColorProfile(String^ readCMYKProfile); (.Net)

引数:

outputRGBProfile:表示用RGBカラープロファイル

readRGBProfile:PDF RGBカラープロファイル

readGrayscaleProfile:PDF GrayScaleカラープロファイル

readCMYKProfile:PDF CMYKカラープロファイル

解説:

カラープロファイルの指定はopenDocument()前に行ってください。

PDFファイルをオープン後にプロファイルを指定した場合、次回のオープンまで反映されません。

7.2.92. エラーがあるか

bool hasError() const;

property bool HasError (.Net) 読み取りのみ

引数:

戻り値:

true エラーがある

解説:

エラーは複数ある場合があります。エラーがある場合はgetErrorMessage()で得られるメッセージを表示し、abandonError()またはclearError()でエラーを廃棄してください。廃棄しない場合、エラーが発生する度にエラーは蓄積されていきます。API呼出が成功した場合でも致命的でないエラー(警告)が発生する場合があります。

7.2.93. 致命的エラーか

bool isFatalError() const;

property bool IsFatalError (.Net)

戻り値:

true エラーが致命的エラーである

解説:

蓄積された最初のエラーについて確認します。

7.2.94. エラー番号の取得

unsigned short getErrorCode() const;

property unsigned short ErrorCode (.Net)

戻り値:

エラー番号

解説:

蓄積された最初のエラーのエラー番号を返します。

7.2.95. エラーメッセージの取得

int getErrorMessage(wchar_t* buffer, int size) const;

property String ErrorMessage (.Net)

引数:

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。bufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.Net)

解説:

蓄積された最初のエラーのエラーメッセージを取得します。

7.2.96. エラーの廃棄

void abandonError() const;

void AbandonError(void); (.Net)

解説:

蓄積されたエラーのうち、最初のエラーを一つ廃棄します

7.2.97. エラーのクリア

void clearError() const;

void ClearError(void); (.Net)

解説:

エラーを全て廃棄します

7.2.98. ライセンス情報の取得

static int getLicenseInfo(LicenseInfoType type, wchar_t* buffer, int size) const;

String GetLicenseInfo(AvsLicenseInfoType type)(.Net)

引数:

type:取得するライセンス情報の種別

buffer:文字列バッファ

size:バッファサイズ(文字数)

戻り値:

コピーした文字数。bufferがNULLの場合は必要なバッファの文字数を返す (C++)

取得した文字列 (.Net)

C++

enum LicenseInfoType {

LI_PATH,

LI_SERIAL,

LI_COMPANY,

LI_SECTION,

LI_USERNAME,

LI_MAINTENANCE_LIMIT,

};

.NET Framework /.NET6 (C#)

public enum class AvsLicenseInfoType {

LI_PATH,

LI_SERIAL,

LI_COMPANY,

LI_SECTION,

LI_USERNAME,

LI_MAINTENANCE_LIMIT,

};

enum値

説明

LI_PATH

0

ライセンスファイル(pdfviewersdk.lic)の絶対パス

LI_SERIAL

1

シリアルナンバー

LI_COMPANY

2

会社名

LI_SECTION

3

部署名

LI_USERNAME

4

ユーザー名

LI_MAINTENANCE_LIMIT

5

保守期限

解説:

指定されたライセンス情報を取得します。

ライセンスファイルに登録がない場合、空文字列が返る場合があります。