6. PDFThumbnailCtrl

6.1. 概要

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

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

以下ではVisualStudio C#での初歩的な使用方法を説明します。.NET Framwork版を利用するには事前に.NET Framework 4.6.2以降のインストールが必要です。 詳細は「4.2動作に必要なモジュール、手続き等」をご覧ください。以下は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 IsOpen { get; }

解説:

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

6.5.2. IsModifiedプロパティ

bool IsModified { get; }

解説:

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

6.5.3. IsLockedByOwnerPasswordプロパティ

bool IsLockedByOwnerPassword { get; }

解説:

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

6.5.4. HasFocusプロパティ

bool HasFocus { get; }

解説:

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

6.5.5. CurrentPageNumberプロパティ

int32 CurrentPageNumber { get; }

解説:

現在のページ番号です。

6.5.6. PageCountプロパティ

int32 PageCount { get; }

解説:

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

6.5.7. SelectedPageCountプロパティ

int32 SelectedPageCount { get; }

解説:

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

6.5.8. CtrlStyleプロパティ

int32 CtrlStyle { get; set; }

設定値:

AvsCtrlStyle

値

説明

AGCS_HIDEOBJECTS

0x0001

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

AGCS_HIDEERRDLG

0x0004

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

AGCS_HIDEPASSWORDDLG

0x0008

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

AGCS_READONLY

0x0010

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

解説:

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

6.5.9. BackgroundColorプロパティ

System.Drawing.Color BackgroundColor { get; set; }

解説:

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

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

6.5.10. TextColorプロパティ

System.Drawing.Color TextColor { get; set; }

解説:

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

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

6.5.11. ThumbnailSizeプロパティ

int32 ThumbnailSize { get; set; }

解説:

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

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

6.5.12. CanUndoプロパティ

bool CanUndo { get; }

解説:

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

6.5.13. CanRedoプロパティ

bool CanRedo { get; }

解説:

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

6.5.14. CanCutプロパティ

bool CanCut { get; }

解説:

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

6.5.15. CanCopyプロパティ

bool CanCopy { get; }

解説:

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

6.5.16. CanPasteプロパティ

bool CanPaste { get;}

解説:

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

6.5.17. CanDeleteプロパティ

bool CanDelete { get; }

解説:

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

6.5.18. CanModifyPageプロパティ

bool CanModifyPage { get; }

解説:

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

6.5.19. HasUserPasswordプロパティ

bool HasUserPassword { get; }

解説:

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

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

6.5.20. HasOwnerPasswordプロパティ

bool HasOwnerPassword { get; }

解説:

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

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

6.5.21. UserPasswordプロパティ

string UserPassword { get; }

解説:

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

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

6.5.22. OwnerPasswordプロパティ

string OwnerPassword { get; set; }

解説:

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

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

6.5.23. SecurityPermissionFlagプロパティ

int32 SecurityPermissionFlag { 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 DocumentPath { get; }

解説:

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

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

6.5.25. SDKVersionプロパティ

string SDKVersion { get; }

解説:

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

6.5.26. SelectedPagesプロパティ

List<int> SelectedPages { get; }

解説:

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

6.5.27. OpenDocumentメソッド

int32 OpenDocument(string filePath, string password);

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

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

戻り値:

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

解説:

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

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

6.5.28. SaveDocumentメソッド

int32 SaveDocument(string filePath);

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

戻り値:

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

解説:

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

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

6.5.29. CloseDocumentメソッド

void CloseDocument ();

解説:

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

6.5.30. GetPDFDocumentHandleメソッド

IntPtr GetPDFDocumentHandle();

戻り値:

PDFDocumentのハンドル

解説:

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

6.5.31. AttachPDFDocumentメソッド

void AttachPDFDocument(IntPtr hPDFDocument);

hPDFDocument:PDFDocumentのハンドル

解説:

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

6.5.32. UnlockOwnerPasswordSecurityメソッド

bool UnlockOwnerPasswordSecurity(string password);

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

戻り値:

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

解説:

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

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

6.5.33. GotoPageメソッド

bool GotoPage (int32 pageNo);

pageNo:表示するページ

戻り値:

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

解説:

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

6.5.34. GetPageRotationメソッド

int32 GetPageRotation (int32 pageNo);

pageNo:ページ番号

戻り値:

回転角度

解説:

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

6.5.35. RotatePagesメソッド

void RotatePages(int32 rotation);

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

解説:

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

6.5.36. InsertNewPagesメソッド

void InsertNewPages(int32 pageCount, int32 rotation, int32 pageWidth, int32 pageHeight, int32 destIndex,);

pageCount:挿入するページ数

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

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

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

解説:

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

6.5.37. MovePagesメソッド

void MovePages(int32 destIndex );

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

解説:

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

6.5.38. CopyPagesメソッド

void CopyPages(int32 destIndex);

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

解説:

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

6.5.39. ResetViewメソッド

void ResetView();

解説:

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

6.5.40. Undoメソッド

void Undo();

解説:

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

6.5.41. Redoメソッド

void Redo();

解説:

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

6.5.42. Cutメソッド

void Cut();

解説:

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

6.5.43. Copyメソッド

void Copy();

解説:

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

6.5.44. Pasteメソッド

void Paste();

解説:

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

6.5.45. Deleteメソッド

void Delete();

解説:

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

6.5.46. SelectPageメソッド

void SelectPage(int32 pageNo, bool bSelect);

pageNo:ページ番号

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

解説:

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

6.5.47. SelectAllメソッド

void SelectAll(bool bSelect);

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

解説:

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

6.5.48. DocumentOpenedイベント

void DocumentOpened(IntPtr hPDFDocument);

hPDFDocument:PDFDocumentのハンドル

解説:

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

6.5.49. PageTurnedイベント

void PageTurned(int32 pageNo);

pageNo:ページ番号

解説:

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

6.5.50. DragDropFilesイベント

int32 DragDropFiles(BSTR\[\] files);

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

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

解説:

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

6.5.51. ContextMenuCイベント

int32 ContextMenuC(System.Drawing.Point point);

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

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

解説:

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