PDF Viewer SDKよくいただくご質問
動作/開発環境
-
「PDF Viewer API」は Visual C++ から利用できますか?
-
はい。
C++とCのAPIを用意しております。※Cからは一部利用できないAPIがございます。
-
「PDF Viewer API」は Visual C# や VB.Net で利用できますか?
-
- V5.0以降
はい。.NET Framework 用のAPIを用意しています。 - V3.5 / V4.0
はい。プラットフォーム呼び出し(P/Invoke)をご利用いただくことで、 C言語 APIを呼び出すことができます。
P/Invoke呼び出しを行うラッパーコードはお客様にてご用意ください。表示・画像出力・テキスト抽出・検索・印刷の主な機能について、サンプルコードをご用意しております。
- V5.0以降
-
「PDF Viewer Ctrl」は .NET Framework 3.5/2.0 で利用できますか?
-
いいえ、できません。
- V5.0以降
.NET Framework 4.6.2 以上をご利用ください。 - V3.5/V4.0
.NET Framework 4.0 以上をご利用ください。
- V5.0以降
-
「PDF Viewer Ctrl」は.NET Framework 対応言語以外で利用できますか?
-
はい。ActiveX に対応した言語で開発できます。
なお弊社では Visual C# で動作確認しております。
※ご注意 V5.0の次のメジャーバージョンアップでは廃止予定です。
-
WPFアプリケーションの開発はできますか?
-
はい。
WindowsFormHostを利用して、WindowsフォームのコントロールをWPFアプリケーション上に配置できます。
WPF での、XAML を使用した Windows フォーム コントロールのホスト
https://docs.microsoft.com/ja-jp/dotnet/desktop/wpf/advanced/walkthrough-hosting-a-windows-forms-control-in-wpf?view=netframeworkdesktop-4.8
-
PDF表示・印刷する同一のアプリケーションを複数同時起動しても、問題ないでしょうか?
-
はい、問題ありません。
「PDF Viewer API」「PDF Viewer Ctrl」どちらもマルチプロセスでの利用に対応しております。
-
マルチスレッドで利用することはできますか?
-
「PDF Viewer API」印刷関連のAPIを除き、マルチスレッドに対応しています。
「PDF Viewer Ctrl」マルチスレッドでの利用には対応しておりません。
-
コマンドラインプログラムから利用できますか?
-
「PDF Viewer API」 は利用可能です。
「PDF Viewer Ctrl」 はGUIを前提としているため利用できません。
-
サービスやタスクスケジューラから利用できますか?
-
「PDF Viewer API」 は利用可能です。
「PDF Viewer Ctrl」 は利用できません。 GUI を前提として開発しております。
-
Adobe Acrobat Reader/Adobe Acrobat は必要ですか?
-
いいえ、必要ありません。
弊社独自のPDF表示機能を実装しております。
-
64ビットOS環境で 32ビット版を使用してもよいですか?
-
はい。
32ビット版について、WOW64上での動作を保証しております。
-
.NET Core 3.1/.NET5/.NET6 に対応していますか?
-
.NET6は対応しております。(V5.0改訂2版以降)
.NET Core 3.1/.NET5は対応予定はありません。
-
実行する環境により表示結果が変わることがありますか?
-
フォントが埋め込まれていないPDFをレンダリングする場合、環境にインストールされたフォントによって表示や画像出力の結果がかわる場合があります。
メモリが少ない場合は、大きな画像のロードに失敗し、ページ上の画像が表示されないことがあります。
-
オープンできるPDFのバージョンに制限はありますか?今後、バージョンが変更された場合の対応はどうなりますか?
-
- V5.0以降
PDF1.3~PDF1.7、PDF2.0を開くことができます。 - V3.5/V4.0
PDF1.3~PDF1.7を開くことができます。
PDF1.3以降が対象ですが、現在流通しているPDFファイルのバージョンは PDF1.3以降がほとんどですので、問題ないかと思います。
新しいバージョンが出た場合は、随時対応していきます。最新のPDF2.0のファイルもオープン可能です(V5)。 - V5.0以降
-
本製品ではJavaランタイムを使用していますか?
-
いいえ、使用しておりません。
-
本製品で使用するポート番号はありますか?
-
いいえ、ありません。
機能
-
Visual Studio のコントロールのようにPDFビューアーコンポーネントを開発アプリに組み込みたい。
-
「PDF Viewer Ctrl」をご利用ください。
フォームデザイナー上でPDFビューアーコントロールをレイアウトして、 Windows フォームアプリケーションを開発できます。
-
PDFファイルを自動印刷するコマンドラインプログラムを開発したい。
-
「PDF Viewer API」 をご利用ください。
PDFファイルを表示することなく印刷するコマンドラインアプリケーションを開発できます。
-
帳票PDF等から指定した矩形内のテキストを抽出できますか?
-
はい、可能です。
PDF表示をしながらテキスト抽出したい場合は「PDF Viewer Ctrl 」を、GUIを表示せず、コマンドラインアプリケーションからテキスト抽出をしたい場合は「PDF Viewer API」 をご利用ください。
-
PDFページ内に矩形を指定して、矩形内を画像へ変換できますか?また、変換した画像をメモリに出力できますか?
-
はい、可能です。
「PDF Viewer API」「PDF Viewer API」どちらでも、ページ全体や指定した矩形内を画像へ変換できます。
メモリへの出力は「PDF Viewer API」でのみ可能です。
-
文字列の検索はできますか?
-
はい、可能です。
前方検索・後方検索、大文字小文字の区別などを指定できます。
-
文字列検索後にヒットした文字列の領域を取得できますか?
-
はい、可能です。
「PDF Viewer API」 をご利用ください。
-
PDF ファイルを検索するために、テキスト抽出、ならびに文字単位での座標を抽出することはできますか?
-
はい、可能です。
PDFページに記載された順序で、テキストや文字の矩形情報を取得できます。
なお、テキスト検索とヒットしたキーワードのハイライト機能も搭載しております。
-
PDF Viewer Ctrl で選択中のテキストを取得することはできますか?
-
- V5.0以降
はい。SelectedTextStringプロパティで取得できます。 - V3.5/V4.0
いいえ。
- V5.0以降
-
Windows フォーム 上のコントロールの表示サイズを、PDFを表示したまま、開発プログラムから変更できますか?
-
はい、可能です。
-
「PDF Viewer Ctrl」を使用したアプリケーションで任意の位置へのズームとパンはプログラムで制御可能でしょうか?
-
はい、可能です。
・ZoomRatio プロパティを設定し、指定された倍率で表示します。
・ScrollToPosition メソッドで、指定ページの指定座標(x,y)へ移動します。
座標は PDFページ上の論理座標になります。
アプリケーションウィンドウ上の座標との変換関数も用意しています。
-
アプリケーションから以下を行いたいのですが、可能でしょうか?
・注釈オブジェクトを選択
・選択した注釈オブジェクト情報(XY座標)を取得
・テキストボックス、円、四角、楕円、折れ線注釈の表示
・ノート注釈の作成 -
はい、すべて可能です。
「PDF Viewer Ctrl」には注釈を作成・編集するメソッドを用意しております。
-
マウスのクリック等のイベントハンドラを利用できるでしょうか?
クリック、ダブルクリック、ドラッグ、右クリック、この時、クリックされた位置(座標)を取得したいです。 -
はい、可能です。
「PDF Viewer Ctrl」のPDFPageViewCtrlに、それらを扱うイベントを用意しています。
座標はイベントハンドラの引数として取得できます。
-
PDFPageViewCtrlを読み取り専用にすることはできますか?
-
はい、可能です。
CtrlStyle プロパティにプレビューモードを指定してください。
編集不可、テキスト選択不可、注釈選択不可、ポップアップ注釈非表示にできます。
-
ファイルダイアログでの[ファイルを開く]、[ファイルの保存]等の操作をさせたくないのですが、「PDF Viewer Ctrl」 でそのような制御は可能でしょうか?
-
はい、可能です。
ファイルダイアログを表示するかどうかはアプリケーション側の処理になりますので、ダイアログを表示せず、ファイルパスを指定してPDFファイルをオープンしていただければ結構です。
-
サロゲート文字に対応していますか?
-
はい、対応しています。
-
PDFのリンク先の情報は取れますか?
-
はい、取得できます。
「PDF Viewer API」では、リンク注釈のヒットテストとリンク種別の取得、リンク注釈の矩形取得、リンクの移動先ページやURIの取得ができます。
「PDF Viewer Ctrl」では、リンク注釈クリックのタイミングでイベントが通知されます。イベントハンドラでリンク種別やリンクの移動先ページやURIの取得ができます。
-
パスワード付きPDFの表示は出来ますか?
-
はい、表示できます。
ファイルオープン時に正しいパスワードをセットしてください。
-
動画が組み込まれたPDFの場合、動画を再生できますか?
-
いいえ。
動画、音声などのマルチメディアの再生には対応しておりません。
-
PDF/A に対応していますか?
-
いいえ。
PDF/A形式のファイルをオープンして表示することはできますが、カラーが正しく表示されないなど正確な表示に対応しておりません。 またPDF/A形式で保存する機能はありません。
-
JavaScriptを利用して閲覧制限をかけたPDFを表示することはできますか?
-
弊社の「PDF Tool API」で閲覧制限をかけたPDFファイルは表示できます。 一般のJavaScriptを使った閲覧制限つきのPDFファイルは表示できません。
-
日本語などの表示に文字化け等は発生しますか? Adobe Acrobat Readerで表示した場合と同じものが表示されますか?
-
- フォントが埋め込まれたPDFファイル
PDFファイルが正しく作成されていれば文字化けが発生することはありません。 - フォントが埋め込まれていないPDF
PDF作成時のフォントが表示環境にない場合、稀に文字化けや文字のレイアウトが起こる可能性はあります。これはフォントがないと別のフォントを割り当てるため(代替フォント)、必要な文字がなかったり文字幅の異なるグリフを使って、表示をおこなうためです。
フォントがない場合の代替フォントの選び方はPDF仕様では規定されておらず、PDFリーダーの実装依存になります。このため、Adobe Acrobat Readerなど他のPDFリーダーと必ずしも同一の表示になりません。
- フォントが埋め込まれたPDFファイル
-
「PDF Viewer SDK」では Adobe Acrobat Readerデフォルトのフォントを利用可能でしょうか?
-
いいえ。
Adobe Acrobat Reader のデフォルトのフォントは Adobe Acrobat Reader が独自に管理しているものです。「PDF Vewer SDK」からは利用できません。
-
Windows OSにインストールされたフォントを参照する際、置換先のフォントを指定することは可能でしょうか。
-
はい。
フォントが埋め込まれていない場合に、指定されたフォントが見つからない場合の代替フォントを指定することができます。代替フォントは明朝体、ゴシック体の2種類のフォントが指定できます。個別のフォントごとに代替フォントを指定する事はできません。
-
一時ファイルは作成されますか?
-
「PDF Viewer API」は作成しません。
「PDF Viewer Ctrl」は作成します。
-
PDFバージョンによって表示速度に影響が出ることがありますか?
-
同じ内容のPDFファイルであれば、PDFバージョンを変えただけでは速度に違いはありません。
PDFバージョンが上がると利用できる機能が増えるので、表示が遅くなることはない訳ではないですが、 それはバージョンというよりPDFファイルの内容によるものです。バージョンについてはあまり気にされる必要はないと思います。
-
サンプルアプリケーションには、保存ボタンや、各種編集ボタンなどが用意されていますが、
・文書を改変・改ざんされたくない。
・復号化された状態でPDF保存されたくない。(文書の外部流出防止)
ので、編集・保存関連の機能は、ボタン・メニューを出さないようにできますか? -
はい、可能です。
・保存ボタンや、各種編集ボタンはサンプルプログラムで用意してるものです。開発するアプリケーションには付けないようにする事ができます。
ご参考)オープンボタンだけのサンプル
http://blog.antenna.co.jp/ILSoft2/archives/1873
http://blog.antenna.co.jp/ILSoft2/archives/1885
・PDFページ表示コントロールの CtrlStyleプロパティを設定することで、編集不可、テキスト選択不可、注釈選択不可、ポップアップ注釈非表示にできます。
-
「PDF Viewer Ctrl」が表示しているPDF文書を全選択してコピーすることを禁止できますか?
-
はい、可能です。
PDFページ表示コントロールの CtrlStyleプロパティを設定することで、編集不可、テキスト選択不可、注釈選択不可、ポップアップ注釈非表示にできます。
PDFページに埋め込まれた、図形や画像は元々コピーする機能がありません。
-
PDFを保存するときのバージョンは指定できますか?
-
いいえ。
元のPDFバージョンや暗号化など設定した内容によって、保存するPDFファイルのバージョンを決定しています。
-
PDFの表示領域はどの範囲になりますか?
-
ページのMediaBoxとCropBoxでクリップされた範囲が表示されます。
-
タイムスタンプの印鑑画像が添付されているPDFのページ画像を生成できますか?
-
はい。
「PDF Viewer API」で可能です。【V5.0以降】
-
PDFのしおりに対応できますか?しおりを表示できますか?
-
はい。対応しています。【V5.0以降】
「PDF Viewer Ctrl」のPDFOullineCtrl でしおりを表示できます。
しおりを選択すると該当ページに移動するなどのアクションを実行できます。
-
拡張子PDFをAdobe Acrobat Readerに関連付けしています。 「PDF Viewer Ctrl」を利用したアプリケーションを端末に導後もPDFの閲覧は、Adobe Acrobat Readerを利用したいのですが、 競合等の不都合が生じることはありますか?
-
いいえ、問題ありません。
「PDF Viewer Ctrl」が拡張子PDFの関連付けを行うことはありません。
-
複数枚の画像を一つ新規PDFファイルに変換できますか?(1ページにつき1枚の画像)
-
いいえ、画像ファイルをPDFファイルに変換する機能はありません。
-
PDFページの追加、90度回転、削除をした編集結果をPDFに保存できますか?
-
はい、「PDF Viewer Ctrl」のPDFThumbnailCtrl でできます。
ページの追加は白紙ページか、PDFThumbnailCtrlでコピーしたページになります。
-
PDFファイルを分割や結合することはできますか?
-
いいえ、できません。
-
PDFファイルの各ページのサムネールを作成できますか?
-
はい、「PDF Viewer Ctrl」のPDFThumbnailCtrlはGUIコントロールとしてサムネイルを作成して表示できます。
PDFを画像化するAPIにより、各ページを画像ファイルにすることもできます。
印刷
-
アプリケーションから印刷設定ダイアログ等のGUI表示なしにPDF印刷は可能でしょうか。
-
「PDF Viewer API」はGUI表示なしで印刷できます。
「PDF Viewer Ctrl」は印刷ダイアログを表示せずAPIから印刷できますが、印刷ステータスのダイアログは表示されます。またGUIアプリケーションが前提です。
-
Adobe Acrobat Reader を使わないでPDFを直接印刷(プリンタ出力)したいのですが、『PDF Viewer SDK』でできますか?
-
はい。
独自に弊社独自のレンダリングエンジンを開発しておりますので、Adobe Acrobat Readerを利用することなく、印刷が可能です。
-
Adobe Acrobat Reader からプリンタに印刷した場合と印刷結果は異なりますか?
-
一般的にはほぼ同等の結果となります。
PDFファイルや印刷するプリンタによっては、必ずしも一致しない場合があります。
弊社独自のレンダリングエンジンを使用しておりますので、他社のPDFリーダーとまったく同一になることは保証しておりません。
評価版をご用意しておりますので、事前に印刷結果をご確認ください。
https://www.antenna.co.jp/pdfviewersdk/trial.html
-
プリンタの用紙サイズに合わせて、PDFの用紙を縮小して印刷できますか?
-
はい。
「PDF Viewer API」「PDF Viewer Ctrl」 どちらでも縮小して印刷することができます。
-
ページを正しく印刷できない場合に取り消せますか? もしくは事前にチェックできますか?
-
いいえ。
途中で取り消したり、事前にチェックすることはできません。
印刷できないデータがあるなどの理由でエラーが発生した場合は、出来る限りエラーを無視して印刷を継続します。
-
印刷時に「複写禁止」などの透かしを入れることはできますか?
-
はい、可能です。
「PDF Viewer API」 の setWatermarkText メソッドをご利用ください。
-
PDFファイルを指定して、またフォルダを指定して一括印刷することはできますか?
-
PDFファイルを指定して印刷できます。
フォルダを指定して一括印刷することはできませんが、
アプリケーション側でフォルダ以下のPDFファイルを順に指定して頂くことで実現は可能です。
-
PDFファイルを複数ファイル同時印刷できますか?
-
はい。
マルチプロセスで複数ファイルを同時印刷できます。
マルチスレッドでの同時印刷には対応しておりません。
-
フォルダ監視をして自動で印刷することはできますか?
-
いいえ。
フォルダ監視機能はございません。アプリケーション側で対応することで、「PDF Viewer API」を使用してそのようなシステムを開発することは可能です。
-
プリンタドライバの設定を反映させて 印刷を実行することはできますか?
-
設定内容によりますが、可能です。
「PDF Vewier API」では上位アプリケーションからDEVMODE構造体とプリンタのデバイスコンテキストを印刷開始APIに渡して印刷開始を行いますので、 通常の Windows の印刷アプリケーションと同様に、プリンタの設定を反映して印刷することができます。
また印刷開始APIで用紙へのフィット方法の指定などができます。
サンプルプログラム(ApiPdfPrint)を添付しております。 https://www.antenna.co.jp/pdfviewersdk/samplecode.html#sample02
-
印刷の向きや用紙サイズを指定することはできますか?
-
はい、可能です。
{PDF Viewer API」では、印刷開始時にプリンタのDEVMODE構造体を指定できます。 こちらを設定することで可能です。 ・用紙サイズ 印刷開始時に paperselect=falseとし、 DEVMODE構造体(dmPaperSize)で用紙サイズを指定します。 ・印刷の向き DEVMODE構造体(dmOrientation )で指定します。 サンプルプログラム(ApiPdfPrint)を添付しております。 https://www.antenna.co.jp/pdfviewersdk/samplecode.html#sample02
-
部数の指定はできますか?
-
はい、可能です。
部数を指定したDEVMODE構造体を、印刷開始関数に渡すことで指定できます。
プリンタ側で部数が扱われます。
-
4、1、2、3ページ、のように任意の順序でページを印刷できますか?
-
はい、可能です。
印刷は以下の順序でおこないます。
1. 印刷開始メソッドを呼び出す。
2. ページ番号を指定して、printPage()を呼び出す。
3. 最後に印刷終了メソッド を呼び出す。
アプリケーション側でご希望の順序でページを指定することが出来ます。
-
印刷成功時の戻り値について、スプールに成功した後、プリンタから紙が出力されたこと(印刷ジョブから消えるところまで)を APIで確認可能でしょうか?
-
いいえ、スプールに成功したことをもって印刷成功としております。
印刷用のAPI(startPrint/endPrint/printPage)を用意しておりますが、内部ではWindows の標準的な GDI Print API を利用しています。 endPrint() を呼び出したタイミングで印刷ジョブが終了し、GDI を介したプリンタドライバとのやり取りは終了します。 このタイミングでプリンタドライバへ印刷データが完全にわたり、スプールを完了します。 これ以降のスプールやプリンタの状況はAPI側では把握しておりません。
-
印刷失敗時の戻り値で詳細なエラー(プリンタ用紙切れ等)を確認することはできるでしょうか?
-
いいえ。
プリンタの詳細状況は、API呼び出しの戻り値としては取得できません。
-
プリンタにスプールされた印刷ジョブについて、APIから状態(印刷待ち等)を確認することは可能でしょうか?
-
いいえ、スプール管理の機能は持ちません。
スプールされた印刷ジョブの印刷失敗などのステータスについても管理しておらず、エラー等としてAPIから報告する機能は持ちません。
-
プリンタの電源がOFFの場合、その場合は「印刷中止」が返却されますか?
-
いいえ。
印刷ジョブはスプールされるので印刷は問題なく進み成功します。 プリンタやプリンタドライバの環境や設定にもよりますが、スプール側で印刷ジョブが待機した状態になります。
開発上の問題
-
バージョン確認方法を教えて下さい。
-
【PDF Viewer APIをご利用の場合】
AvsPDFViewerSDKXX.dllの「製品バージョン」をご確認ください。※
【PDF Viewer Ctrl をご利用の場合】
AvsPDFViewerSDKXX.dll の「製品バージョン」をご確認ください。※
※確認方法
エクスプローラーでファイルのプロパティを開き「詳細」タブの「製品バージョン」をご確認ください。
例) 4.0.6.0 → V4.0 MR6 ( V4.0 改訂6版、または 4.0.6 と表記する場合があります。)
4桁目は通常「0」です。
改訂版公開までに、弊社内で版を重ねた場合はカウントアップされる場合があります。
改訂版公開後にカウントアップする事は通常はありません。
-
コントロールを貼り付けたフォームを Visual Studio のフォームデザイナーで開くとエラーになります。
-
【32ビット版コントロールをご利用の場合】
PATH を通さないとフォームデザイナーを開いたときに以下のエラーが発生します。
その場合は一旦 Visual Studio を終了してから、環境変数 Path に AvsDotNetGuiCtl.dll が含まれるフォルダパスを追加し、再度 Visual Studio を起動してから、フォームデザイナーで開いてください。
(Visual Studio の再起動が必要です)
【64ビット版コントロール(V5.0)をご利用の場合】
Visual Studio 2019 は32ビットアプリケーションのため、64ビット版コントロールをフォームデザイナーでロードして表示する事ができません。32ビット版でフォームデザインを行ったあと、64ビット版としてビルドしてください。詳しくはマニュアルをご覧ください。
「PDF Viewer Ctrl インタフェース仕様」-「4.4. 64bit コントロール」
-
フォームデザイナー上でコントロールをドラッグ&ドロップしてもフォーム上に何も表示されません。
-
【32ビット版コントロールをご利用の場合】
フォームデザイナーが関連DLLをロードしてコントロールを表示できないためです。AvsDotNetGuiCtl.dll と関連DLL を含むフォルダにPATHを通した状態で Visual Studio を起動してください。
-
インストールされたVisual C#のサンプルをVisual Studioで開いてビルドするとエラーになります。
-
samples フォルダのみコピーした場合は、以下のようなエラーが出ることがあります。
コマンド ""[コピー先]\samples\Windows-VS2010\prebuild.bat" "[コピー先]\samples\Windows-VS2010\Win32\Release\"" はコード 4 で終了しました。
この場合は、samples フォルダ以外のデータも同じ階層にコピーしてビルドしてください。最低限必要なのは以下のフォルダです。samples\ bin\ Include\ lib\
-
32ビット版を使用して開発したアプリケーションを、64ビット化しました。実行すると「算術演算の結果オーバーフローが発生しました。」のエラーが発生します。
-
DocumentOpendイベントなどのイベントハンドラで、PDFDocumentのハンドルをInt32型の引数で受け取っている可能性があります。引数の型を IntPtrに変更してください。 32ビット版と64ビット版では、受け渡されるハンドルのサイズが違います。
-
.NET Frameworkでの開発でx64/x86を切り替えたとき、参照するDLLも切り替える必要はありますか?
-
はい。
ビルドするプラットフォームがx64/x86であるかに応じて、64ビット版/32ビット版のDLLを参照する必要があります。「PDF Viewer Ctrl」のマニュアルに記載がありますのでご覧ください。
-
ActiveXのサンプルをビルドするとエラーが発生します。
-
ActiveXコントロールを登録していない状態で、サンプル AvsActiveXCtlSampleをビルドすると、以下のエラーがでます。
AvsActiveX.ocxをレジストリに登録してからビルドしてください。
ーーーーーーーーーーーーーーーーー
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー CS0246 型または名前空間の名前 'AxAVSACTIVEXCTLLib' が見つかりませんでした
(using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)
AvsActiveXCtlSample C:\PDFViewerSDK_V50\samples\Source\AvsActiveXCtlSample\Form1.cs 617
アクティブ
-
サンプルソースを上手く実行できません。
-
サンプルについてはSDKに付属の「PDF Viewer SDK V5 製品説明書」の「4. サンプルプログラムについて」をまずはご覧ください。
VS2019 の場合、とりあえずビルドして実行するには、sample.bat から VS2019 を起動し、 構成 Release プラットフォーム x86 でソリューションをビルドしてください。 (プラットフォーム x86 をビルドするときは、sample.bat 、x64をビルドするときはsample64.batをお使いください。)
-
開発したアプリケーションがクラッシュします
-
以下の情報をいただけると不具合箇所の特定につながる場合がございますので、 取得可能な場合は弊社サポートへ情報をご提供ください。
- イベントビューアーのイベントログ
- クラッシュダンプ
1. イベントビューアーのイベントログ
クラッシュのタイミングでイベントビューアーの「Windowsログ」-「Application」にエラーが出る場合があります。その内容をお送りください。
ソースは通常 Application Error、.NET Runtime (.NETの場合)になります。
.NETの場合は両方でる場合があります。2. クラッシュダンプの採取方法
下記URLに従ってクラッシュダンプが出力されるように設定したうえで、クラッシュが発生する操作を行ってください。 設定にはレジストリ設定の変更が必要ですので、必要に応じてバックアップを取るなどの措置をおこなってください。
プロセス ダンプの出力設定(クラッシュ)
https://jpwinsup.github.io/blog/2021/02/15/Performance/Hang_BSOD/AppDump/- 異常終了時にダンプ出力されるため通常より少し時間がかかるかと思います。
- 取得が終わりましたら、設定は元に戻して頂いてかまいません。
- 出力設定の確認には、たとえいば以下のようなアプリケーションを利用することでテストを行うことができます。
CrashMe
http://windbg.info/apps/46-crashme.html- CrashMe.zip をダウンロードして展開後、CrashMe\release\CrashMe.exeを起動。
- 「BreakPoint」ボタンをクリック。C:\Dumps以下に .dumpができるか確認。
-
getSearchPositionRegionで取得した HRGNから複数の矩形を取得するにはどうすればよいでしょうか?
-
検索においてヒットした文字列が複数行にわたる場合、ヒットした領域は単純な矩形にならず複数の矩形で構成される領域になります。 PDF Viewer API ではこの領域を getSearchPositionRegionにて取得することができます。
さらにこのHRGNから個別の矩形を取得する場合、以下のC++サンプルコードで取得できることを確認しております。動作確認の上、ご利用ください。
C++の場合HRGN rgn = nullptr; int pageNo = pdf->getSearchPositionRegion(rgn); if (rgn != nullptr) { LPRGNDATA lpRgnData = nullptr; int bufSize = GetRegionData(rgn, 0, nullptr); lpRgnData = (LPRGNDATA) new byte[bufSize]; int bufSizeRead = GetRegionData(rgn, bufSize, lpRgnData); RGNDATAHEADER header = lpRgnData->rdh; RECT* rects = (RECT*) lpRgnData->Buffer; for (int i = 0; i < m_rectCount; i++) { RECT rect = rects[i]; } delete [] lpRgnData; }
.NET/.NET Frameworkの場合
相当するAPIはないようですので、P/Invoke経由でWin32 APIを利用する必要があるようです。
動作の詳細
-
「PDF Viewer API」 の矩形選択・矩形内テキストの取得を行う関数(getTextInRect())を使用する際、第二引数の「RECT(構造体)」はどのように指定したらよいでしょうか? C++のマウスカーソルの座標取得する関数(GetCursorPos)より取得した値を設定しましたが、うまくいきません。
-
座標値は「PDF Viewer API」の座標系で指定してください。
マウスの座標をデバイスに依存しない「PDF Viewer API」の座標に変換する必要があります。
【PDF Viewer API の座標系】
・原点は左上、x軸は右方向、y軸は下方向に増加
・単位は TWIP(1ポイント=20TWIP、1インチ=72ポイント=1440TWIP)
マウス座標からPDFページ上の座標に変換するサンプルコードは、SDK付属のAvsPDFViewerSampleプログラムにございます。(ソースファイルPDFViewerView.cppの OnMouseMove メソッド)
-
PDFPageViewCtrl で ClientToLogical 関数のPAGENO引数がクリアされてしまいます。
-
ClientToLogical 関数は、ウィンドウのクライアント座標(x, y) を入力として、 PDFのページ番号とそのページ上の論理座標(x, y)を返します。
連続ページ表示などウィンドウに複数のPDFのページが同時に表示されるときは、マウス位置によってPAGENO引数が変化し、カレントページ番号と必ずしも同じにならない場合があります。
-
PDF Viewer Ctrlで保存した注釈が、あるシステムで表示されません。
-
【V3.5 / V4 の場合】
V4以前のバージョンでは、注釈の外観ストリームを保存しません。
注釈表示に外観ストリームが必要なPDFリーダーやシステムですと、注釈が表示されなかったり見かけが異なることがあるかもしれません。
V5 へのバージョンアップをご検討ください。
【V5 の場合】
注釈の外観ストリームを保存するようになり、注釈表示の互換性が向上しています。V4以前の問題は発生しないと思われます。
お問い合わせ
- Webフォーム
- Webフォームからお問い合わせ
- 電子メール
- sis@antenna.co.jp