6. PDFThumbnailCtrl

6.1. 概要

サムネイルを表示するコントロールです。フォームに貼り付けるだけで簡単に利用することができます。

6.2. チュートリアル .NET Framework版

以下ではVisualStudio C#での初歩的な使用方法を説明します。.NET Framwork版を利用するには事前に.NET Framework 4.6.2以降のインストールが必要です。 詳細は「4.3動作に必要なモジュール、手続き等」をご覧ください。以下は32bit版での説明です。

  1. VisualStudioを起動する前に環境変数”Path”にbin\Win32フォルダのパスを追加してください。こうしないとフォームデザイナを開いたときエラーになることがあります。(ビルド、実行には影響しませんので開発環境のみおこなってください。64bit版コントロールを利用した開発については「64bitコントロールについて」を参照してください。)
  2. メニューから[ファイル]-[新規作成]-[プロジェクト]を選び、「新しいプロジェクト」ダイアログからVisualC#の「Windowsフォーム アプリケーション」を選択して適当なプロジェクト名(ここでは”Test”とします)を入力したら[OK]を押してください。
  3. メニューから[ツール]-[ツールボックス アイテムの選択]を選び、右下の「参照...」ボタンを押してbin\Win32ディレクトリにあるAvsDotNetGuiCtl.dllを選択してください。「PDFThumbnailControl」にチェックをつけて[OK]を押します。
  4. ツールボックスペインに「PDFThumbnailControl」のアイコンが追加されていますのでそれを選びフォーム上でドラッグ&ドロップして貼り付けてください。その他、OpenFileDialogコントロール、Buttonコントロールを貼り付けてください。
  5. 貼り付けたButtonコントロールをダブルクリックします。コードが表示されますので次のように処理を書きます。

private void button1_Click(object sender, EventArgs e)

{

if (openFileDialog1.ShowDialog() == DialogResult.OK)

pdfThumbnailCtrl1.OpenDocument(openFileDialog1.FileName, "");

}

  1. メニューから[プロジェクト]-[参照の追加]を選び[参照]タブを選択し、bin\Win32ディレクトリにあるAvsDotNetGuiCtl.dllを選択してください。[OK]を押すとプロジェクトの参照設定にAvsDotNetGuiCtlが追加されます。
  2. 実行します。ボタンを押すとファイルダイアログが表示されPDFファイルを指定するとサムネイルを表示することができます。

6.3. アプリケーションが実装すべき項目

コントロールには多くの機能がデフォルトで実装されており、ほとんどの機能はボタンを用意してメソッドを呼び出すだけで、もしくはファイルを開いただけで、簡単に利用できるようになっています。ここでは各機能についてアプリケーション側が実装すべきこと、関知できることについて簡単に説明します。詳しくは付属のサンプルプログラムを参考にしてください。

機能概要

説明

ファイルのドラッグ&ドロップ

デフォルトではドロップされたファイルの一つを開きます。

異なる動作をおこないたい場合はDragDropFilesイベントをハンドリングしてください。

コントロール間の同期(編集)

デフォルトではなにもしません。

同期をとるにはDocumentOpenedイベントでAttachPDFDocumentしてください。同期をとるとページの入れ替えや回転といった編集処理をおこなったとき、同期中の全コントロールに反映されます。

コントロール間の同期(ページ遷移)

デフォルトではなにもしません。

同期をとるにはPageTurnedイベントでGotoPageしてください。

右クリックメニュー

デフォルトで用意されています。

これを任意のものに変更することはできません。

ページのドラッグ&ドロップ

ページのドラッグ&ドロップによる移動、コピー処理がデフォルトで用意されています。

同ドキュメント内では[Ctrl]を押しながらドロップするとコピーになります。また、異なるドキュメントからドラッグ&ドロップでページをもってくることが可能です。

ページの移動、コピー、削除

ページを処理するためのGUIインタフェースはデフォルトで用意されています。

ショートカットキー[Delete]/[BackSpace]/[Esc]/[Ctrl]/[Shift]/方向キーがデフォルトでハンドリングされています。意図的な別処理への置き換えでなければアプリケーション側ではハンドリングしないでください。

アンドゥー、リドゥー

デフォルトで実装されています。

独自のアンドゥー処理を差し込むことはできません。

ショートカットキー[Ctrl]+[Z]/[Y]がデフォルトでハンドリングされていますので意図的に別の処理に置き換えたいのでなければアプリケーション側ではハンドリングしないでください。

スクロール

スクロールバークリック、キー押下などによるスクロール処理がデフォルトで実装されています。

ショートカットキー[Home]/[End]/[PageUp]/[PageDown]/方向キーがデフォルトでハンドリングされています。意図的な別処理への置き換えでなければアプリケーション側ではハンドリングしないでください。

カット、コピー&ペースト、すべて選択

デフォルトで実装されています。

ショートカットキー[Ctrl]+[X]/[C]/[V]/[A]がデフォルトでハンドリングされています。意図的な別処理への置き換えでなければアプリケーション側ではハンドリングしないでください。

6.4. API一覧

6.4.1. プロパティ

プロパティ名

.NET / .NET Framework

概要

IsOpen

PDFがオープンされているか調べます。

IsModified

PDFが編集状態か調べます。

IsLockedByOwnerPassword

オーナパスワードでロックされている状態かどうか調べます。

HasFocus

コントロールがフォーカスを持っているかどうか調べます。

CurrentPageNumber

現在のページ番号を取得します。

PageCount

ページ数を取得します。

SelectedPageCount

選択中のページ数を取得します。

CtrlStyle

スタイルを設定します。

BackgroundColor

背景色を設定します。

TextColor

テキスト色を設定します。

ThumbnailSize

サムネイルサイズを設定します。

CanUndo

Undoが可能か調べます。

CanRedo

Redoが可能か調べます。

CanCut

Cutが可能な状態か調べます。

CanCopy

Copyが可能な状態か調べます。

CanPaste

Pasteが可能な状態か調べます。

CanDelete

Deleteが可能な状態か調べます。

CanModifyPage

ページ編集が可能な状態か調べます。

HasUserPassword

ユーザパスワードが設定されているかどうかを調べます。

HasOwnerPassword

オーナパスワードが設定されているかどうかを調べます。

UserPassword

ユーザパスワードを取得/設定します。

OwnerPassword

オーナパスワードを取得/設定します。

SecurityPermissonFlag

PDFのセキュリティフラグを取得/設定します。

DocumentPath

オープンしているPDFのPathを取得します。

SDKVersion

SDKバージョン番号を取得します。

SelectedPages

選択中のページ番号のリストを返します。

6.4.2. メソッド

メソッド名

.NET / .NET Framework

概要

OpenDocument

PDFをオープンします。

SaveDocument

PDFを保存します。

CloseDocument

PDFをクローズします。

GetPDFDocumentHandle

PDFDocumentのハンドルを取得します。

AttachPDFDocument

PDFDocumentのハンドルをコントロールに関連付けます。

UnlockOwnerPasswordSecurity

オーナパスワードを指定してセキュリティを解除します。

GotoPage

指定したページへ移動します。

GetPageRotation

ページの回転角度を取得します。

RotatePages

ページを回転します。

InsertNewPages

白紙ページを挿入します。

MovePages

ページを移動します。

CopyPages

ページをコピーします。

ResetView

ビューをクリアして作り直します。

Undo

編集を元に戻します。

Redo

Undoをやり直します。

Cut

切り取ってクリップボードに保存します。

Copy

コピーしてクリップボードに保存します。

Paste

クリップボードの内容を貼り付けます。

Delete

削除をおこないます。

SelectPage

ページを選択します。

SelectAll

全ページを選択します。

6.4.3. イベント

イベント名

.NET / .NET Framework

概要

DocumentOpened

ドキュメントがオープンされたときに呼ばれます。

PageTurned

選択ページが変わったときに呼ばれます。

DragDropFiles

ファイルがドラッグ&ドロップされたときに呼ばれます。

ContextMenuC

コントロール上でマウスボタンが右クリックされたときやコンテキストメニューボタンが押されたときに呼ばれます。

6.5. APIリファレンス

6.5.1. IsOpenプロパティ

型: bool (.NET)   (get のみ)

解説: PDFがオープンされているかどうか調べます。オープンされていればTrueになります。

6.5.2. IsModifiedプロパティ

型: bool (.NET)   (get のみ)

解説: 最後に保存してからPDFが変更されているかどうかを調べます。変更されていればTrueになります。

6.5.3. IsLockedByOwnerPasswordプロパティ

型: bool (.NET)   (get のみ)

解説: PDFにオーナパスワードセキュリティによるロックがかかっている状態かどうかを調べます。ロックされていればTrueになります。

6.5.4. HasFocusプロパティ

型: bool (.NET)   (get のみ)

解説: コントロールがフォーカスを持っているかどうか調べます。フォーカスをもっていればTrueになります。.NETのControl.Focusedプロパティは正しく機能しませんのでこのプロパティを使用してください。フォーカスを設定するには SetFocusメソッドを使用してください。(.NETのみ)

6.5.5. CurrentPageNumberプロパティ

型: int32 (.NET)  (get のみ)

解説:現在のページ番号です。

6.5.6. PageCountプロパティ

型: int32 (.NET)  (get のみ)

解説: PDFの総ページ数です。PDFがオープンされていない場合は0になります。

6.5.7. SelectedPageCountプロパティ

型: int32 (.NET)  (get のみ)

解説: 選択中のページ数が返ります。

6.5.8. CtrlStyleプロパティ

型: int32 (.NET)  (get / set)

設定値:

AvsCtrlStyle

説明

AGCS_HIDEOBJECTS

0x0001

注釈等のオブジェクトを表示しません

AGCS_HIDEERRDLG

0x0004

エラーダイアログを表示しません

AGCS_HIDEPASSWORDDLG

0x0008

パスワード入力ダイアログを表示しません

AGCS_READONLY

0x0010

読込専用モード(編集不可)に設定します

解説:コントロールのスタイルを上記ビットの組み合わせで設定します。デフォルトは0です。

6.5.9. BackgroundColorプロパティ

型: System.Drawing.Color (.NET)  (get / set)

解説:背景色(ページの外の領域)です。

変更する場合はOpenDocument前に設定してください。OpenDocument後に設定しても反映されません。

6.5.10. TextColorプロパティ

型: System.Drawing.Color (.NET)  (get / set)

解説:ページ番号のテキスト色です。

変更する場合はOpenDocument前に設定してください。OpenDocument後に設定しても反映されません。

6.5.11. ThumbnailSizeプロパティ

型: int32 (.NET)  (get / set)

解説:表示するサムネイルのサイズです。単位はピクセルです。デフォルトは82です。

設定可能な値の範囲は、30~200です。変更する場合はOpenDocument前に設定してください。OpenDocument後に設定しても反映されません。

6.5.12. CanUndoプロパティ

型: bool (.NET)  (get のみ)

解説:Undoができるかどうか調べます。Undo可能であればTrueになります。

6.5.13. CanRedoプロパティ

型: bool (.NET)  (get のみ)

解説:Redoができるかどうか調べます。Redo可能であればTrueになります。

6.5.14. CanCutプロパティ

型: bool (.NET)  (get のみ)

解説:Cutができるかどうか調べます。Cut可能であればTrueになります。

6.5.15. CanCopyプロパティ

型: bool (.NET)   (get のみ)

解説:Copyができるかどうか調べます。Copy可能であればTrueになります。

6.5.16. CanPasteプロパティ

型: bool (.NET)  (get のみ)

解説:Pasteができるかどうか調べます。Paste可能であればTrueになります。

6.5.17. CanDeleteプロパティ

型: bool (.NET)  (get のみ)

解説:Deleteができるかどうか調べます。Delete可能であればTrueになります。

6.5.18. CanModifyPageプロパティ

型: bool (.NET)  (get のみ)

解説:ページの編集(追加、削除、変更)ができるかどうか調べます。ページ編集可能であればTrueになります。

6.5.19. HasUserPasswordプロパティ

型: bool (.NET)  (get のみ)

解説:PDFにユーザパスワードが設定されているか調べます。ユーザパスワードが設定されていればTrueになります。

通常はオープン時のPDFの状態を返しますが、UserPasswordプロパティに値をセットした場合、状態が変更されます。ドキュメントをオープンしていない場合は必ずFalseになります。

6.5.20. HasOwnerPasswordプロパティ

型: bool (.NET)  (get のみ)

解説:PDFにオーナパスワードが設定されているか調べます。オーナパスワードが設定されていればTrueになります。

通常はオープン時のPDFの状態を返しますが、OwnerPasswordプロパティに値をセットした場合、状態が変更されます。ドキュメントをオープンしていない場合は必ずFalseになります。

6.5.21. UserPasswordプロパティ

型: string (.NET)  (get / set)

解説:ユーザパスワードです。オープン時にユーザパスワードを指定してPDFを開くとその値が入ります。空文字をセットするとパスワードを設定していないことになり、HasUserPasswordでFalseが返るようになります。

値のセットはIsLockedByOwnerPassword()がTrueの状態では失敗します。

6.5.22. OwnerPasswordプロパティ

型: string (.NET)  (get / set)

解説:オーナパスワードです。オープン時にオーナパスワードを指定してPDFを開くとその値が入ります。空文字をセットするとパスワードを設定していないことになり、HasOwnerPasswordでFalseが返るようになります。

値のセットはIsLockedByOwnerPassword()がTrueの状態では失敗します。

6.5.23. SecurityPermissionFlagプロパティ

型: int32 (.NET)  (get / set)

解説:PDFのセキュリティ許可フラグです。

次のビットの組み合わせとなります。

AvsSecurityPermissionFlag

説明

ASPF_ENABLE_PRINT

0x0004

印刷許可

ASPF_ENABLE_CHANGEDOC

0x0008

ドキュメント内容の変更許可

ASPF_ENABLE_COPYCONTENT

0x0010

内容のコピー許可

ASPF_ENABLE_MODIFYANNOT

0x0020

注釈の編集許可

ASPF_ENABLE_FILLFORM

0x0100

フォームフィールドの入力許可

ASPF_ENABLE_ACCESSIBILITY

0x0200

アクセシビリティの許可

ASPF_ENABLE_ASSEMBLEDOC

0x0400

ページの挿入、削除、回転許可

ASPF_ENABLE_PRINTHIGHLEVEL

0x0804

高解像度の印刷許可

値のセットはIsLockedByOwnerPasswordがTrueの状態では失敗します。

6.5.24. DocumentPathプロパティ

型: string (.NET)  (get のみ)

解説:オープン中PDFファイルのPathを取得します。

V5.0以降ではSaveDocumentでファイルパスを指定した後もオープンしたパスを返します。

6.5.25. SDKVersionプロパティ

型: string (.NET)  (get のみ)

解説:PDFViewerSDKのバージョン番号です。

6.5.26. SelectedPagesプロパティ

型: List<int> (.NET)   (get のみ)

解説:選択中のページ番号のリストをSystem.Collections.Generic.Listとして返します。

6.5.27. OpenDocumentメソッド

int32 OpenDocument(string filePath, string password); (.NET)

filePath:PDFファイルのパスを指定します。

password:パスワード パスワード無しの場合は空文字列を指定してください。

戻り値:成功した場合0が返ります。失敗した場合はエラーコードが返ります。

解説: PDFファイルをオープンします。 閲覧パスワードがかかっているPDFの場合、デフォルトではパスワード入力ダイアログを表示します。それ以外のエラーが発生した場合はエラーダイアログを表示します。 

エラー時にダイアログを一切表示したくない場合はCtrlStyleプロパティで0x0004を指定してください。また、0x0008を指定するとパスワードがかかったPDFでもパスワード入力ダイアログが表示されません。この場合パスワード処理は自分でおこなう必要があります。エラーコードが843906の場合は、PDFにパスワードが設定されていて、与えられたpassWordが一致しないエラーです。パスワード入力を行い、再度OpenDocument()を呼び出してください。

6.5.28. SaveDocumentメソッド

int32 SaveDocument(string filePath); (.NET)

filePath:PDFファイルのパスを指定します。

戻り値:成功した場合0が返ります。失敗した場合はエラーコードが返ります。

解説: PDFファイルを保存します。

エラー時にダイアログを一切表示したくない場合はCtrlStyleプロパティで0x0004を指定してください。

6.5.29. CloseDocumentメソッド

void CloseDocument (); (.NET)

解説:PDFファイルをクローズします。

6.5.30. GetPDFDocumentHandleメソッド

IntPtr GetPDFDocumentHandle(); (.NET)

戻り値: PDFDocumentのハンドル

解説:コントロールに関連付けられているPDFDocumentのハンドルを取得します。ハンドルはOpenDocumentでファイルを開いた後に取得してください。

6.5.31. AttachPDFDocumentメソッド

void AttachPDFDocument(IntPtr hPDFDocument); (.NET)

hPDFDocument:PDFDocumentのハンドル

解説:指定したPDFDocumentのハンドルをコントロールに関連付けます。一つのPDFDocumentを、複数のコントロールと使い回したいときに使用します。同じPDFDocumentを持つコントロールはアンドゥー、回転、ファイルクローズ時などを同期します。

6.5.32. UnlockOwnerPasswordSecurityメソッド

bool UnlockOwnerPasswordSecurity (string password); (.NET)

password:オーナパスワードを指定します。

戻り値:セキュリティ解除に成功した場合、trueが返ります。

解説:オーナパスワードを指定してセキュリティを解除します。

PDFにオーナパスワードがかかっている場合、オープン時にオーナパスワードを入力してPDFを開くか、この関数でセキュリティを解除しない限り、ページの回転、オブジェクトの追加、削除、変更といった編集機能は一切動作しません。

6.5.33. GotoPageメソッド

bool GotoPage (int32 pageNo); (.NET)

pageNo:表示するページ

戻り値:True 成功(ページが切り替わった場合)

解説:指定したページを表示します。

6.5.34. GetPageRotationメソッド

int32 GetPageRotation (int32 pageNo); (.NET)

pageNo:ページ番号

戻り値:回転角度

解説:指定したページの回転角度を取得します。

6.5.35. RotatePagesメソッド

void RotatePages(int32 rotation); (.NET)

rotation:回転角度。90/180/270のいずれかを指定

解説:選択中のページを回転します。回転は90度単位です。

6.5.36. InsertNewPagesメソッド

void InsertNewPages(int32 pageCount, int32 rotation, int32 pageWidth, int32 pageHeight,

int32 destIndex,); (.NET)

pageCount:挿入するページ数

rotation:回転角度 90/180/270のいずれかを指定

pageWidth/pageHeight:ページサイズ(twip)

destIndex:挿入先。0からはじまるインデックス。

解説:白紙ページを挿入します。

6.5.37. MovePagesメソッド

void MovePages(int32 destIndex ); (.NET)

destIndex:移動先。0からはじまるインデックス

解説:選択中のページを指定した位置へ移動します。

6.5.38. CopyPagesメソッド

void CopyPages(int32 destIndex); (.NET)

destIndex:コピー先。0からはじまるインデックス

解説:選択中のページを指定した位置へコピーします。

6.5.39. ResetViewメソッド

void ResetView(); (.NET)

解説:ビューをクリアして作り直します。

6.5.40. Undoメソッド

void Undo(); (.NET)

解説:最後の編集操作を取り消します。最高50回まで可能です。CanUndo()でアンドゥー可能かどうか調べることができます。

6.5.41. Redoメソッド

void Redo(); (.NET)

解説:Undoを取り消します。最高50回まで可能です。CanRedo()でリドゥー可能かどうか調べることができます。

6.5.42. Cutメソッド

void Cut(); (.NET)

解説:選択されたページを切り取ってクリップボードに保存します。CanCut()で切り取り可能かどうか調べることができます。

6.5.43. Copyメソッド

void Copy(); (.NET)

解説:選択されたページをコピーしてクリップボードに保存します。CanCopy()でコピー可能かどうか調べることができます

6.5.44. Pasteメソッド

void Paste(); (.NET)

解説:クリップボードの内容(CutやCopyしたページ)を貼り付けます。CanPaste()で貼り付け可能かどうか調べることができます。

6.5.45. Deleteメソッド

void Delete(); (.NET)

解説:選択されたページを削除します。CanDelete()で削除可能かどうか調べることができます。

6.5.46. SelectPageメソッド

void SelectPage(int32 pageNo, bool bSelect); (.NET)

pageNo:ページ番号

bSelect:選択する場合はTrue、選択解除する場合はFalseを指定します。

解説:指定したページを選択、または選択解除します。ページ遷移はおこないません。

6.5.47. SelectAllメソッド

void SelectAll(bool bSelect); (.NET)

bSelect:選択する場合はTrue、選択解除する場合はFalseを指定します。

解説:全ページを選択、または選択解除します。

6.5.48. DocumentOpenedイベント

void DocumentOpened(IntPtr hPDFDocument); (.NET)

hPDFDocument:PDFDocumentのハンドル

解説:ドキュメントがオープンされたときに発行されます。

6.5.49. PageTurnedイベント

void PageTurned(int32 pageNo); (.NET)

pageNo:ページ番号

解説:現在ページが変更になったときに発行されます。

6.5.50. DragDropFilesイベント

int32 DragDropFiles(BSTR[] files); (.NET)

files:ドロップされたファイル名

戻り値(.NET):デフォルトの動作(files[0]を開く)を実行する場合は0以外を返します。 0を返すとデフォルト動作をおこないません。

解説:コントロールにファイルがドラッグ&ドロップされたときに発行されます。

6.5.51. ContextMenuCイベント

int32 ContextMenuC(System.Drawing.Point point); (.NET)

戻り値 (.NET):コントロールのデフォルト処理を実行する場合は1を返します。 0を返すとデフォルト処理をおこないません。

point (.NET):カーソル位置のクライアント座標が入ります。

解説:マウス右クリックされるかコンテキストメニューボタンが押されたときに発行されます。