4. コントロール情報

4.1. .NET/.NET Framework版

.NET版と.NET Framework版では利用条件が異なります。情報を下記にまとめました。

.NET6

.NET Framework

ネームスペース

AvsDotNetGuiCtl

AvsDotNetGuiCtl

DLL名

AvsGuiCtl50Net60.dll

AvsDotNetGuiCtl.dll

対象フレームワーク

.NET6

.NET Framework 4.6.2 以上

検証済み環境

Microsoft Visual Studio 2022

Visual C#

Windowsフォームアプリ(.NET)

Windowsフォームアプリアプリケーション(.NET Framework)

Microsoft Visual Studio 2019

Visual C#

Windowsフォームアプリアプリケーション(.NET Framework)

また、Visual Stdioでサポートされる開発作業もバージョンにより異なります。

開発内容

VS2019

VS2022

.NET Framework Windowsフォームアプリ

 32bit/64bitアプリ開発

 32bitフォームデザイン/ツールパネルへのコントロール登録

×

 64bitフォームデザイン/ツールパネルへのコントロール登録

×

.NET Windowsフォームアプリ

 32bit/64bitアプリ開発

×

 32bitフォームデザイン/ツールパネルへのコントロール登録

×

×

 64bitフォームデザイン/ツールパネルへのコントロール登録

×

×

.NETでは、フォームデザイナーでネイティブDLLを利用するコントロールがサポートされないためです。このためGUIの開発には直接コードを記述する、もしくは .NET Frameworkのフォームデザイナーでデザインし生成されたコードを流用するなどの工夫が必要になります。なお、WPFなど直接フォームデザイナーにコントロールのDLLをロードしない場合は問題ありません。

4.2. ActiveX版

コンポーネント名

AntennaHouse PDFViewer ActiveX Control

OCXファイル

AvsActiveXCtl.ocx

検証済みの環境

Microsoft Visual Studio 2019 (Visual C#)

4.3. 動作に必要なモジュール、手続き等

依存するファイルはbin\Win32またはbin\x64フォルダに含まれる下記ファイルになります。

ご利用になるAPIに応じて必要なモジュールをご利用ください。

インタフェース

必要なモジュール

.NET6(32bit)

bin\Win32\

AvsGuiCtl50Net60.dll

AvsGuiCtl50.dll

icuin55.dll

icuuc55.dll

icudt55.dll

Ijwhost.dll

base2 (フォルダ)

JapanColor2001Coated.icc

.NETデスクトップランタイム6.0(x86)

Visual Studio 2015、2017、2019、および 2022 用 Microsoft Visual C++ 再頒布可能パッケージ(x86)

.NET6(64bit)

bin\x64\

AvsGuiCtl50Net60.dll

AvsGuiCtl50.dll

icuin55.dll

icuuc55.dll

icudt55.dll

Ijwhost.dll

base2 (フォルダ)

JapanColor2001Coated.icc

.NETデスクトップランタイム6.0(x64)

Visual Studio 2015、2017、2019、および 2022 用 Microsoft Visual C++ 再頒布可能パッケージ(x64)

.NET Framework(32bit)

bin\Win32\

AvsDotNetGuiCtl.dll

AvsGuiCtl50.dll

icuin55.dll

icuuc55.dll

icudt55.dll

base2 (フォルダ)

JapanColor2001Coated.icc

.NET Framework 4.6.2以上(x86)

Visual Studio 2015、2017、2019、および 2022 用 Microsoft Visual C++ 再頒布可能パッケージ(x86)

.NET Framework(64bit)

bin\x64\

AvsDotNetGuiCtl.dll

AvsGuiCtl50.dll

icuin55.dll

icuuc55.dll

icudt55.dll

base2 (フォルダ)

JapanColor2001Coated.icc

.NET Framework 4.6.2以上(x64)

Visual Studio 2015、2017、2019、および 2022 用 Microsoft Visual C++ 再頒布可能パッケージ(x64)

ActiveX(32bit)

bin\Win32\

AvsActiveXCtl.ocx

AvsGuiCtl50.dll

icuin55.dll

icuuc55.dll

icudt55.dll

base2 (フォルダ)

JapanColor2001Coated.icc

AxInterop.AVSACTIVEXCTLLib.dll(.NETから利用する場合)

Interop.AVSACTIVEXCTLLib.dll(.NETから利用する場合)

Visual Studio 2015、2017、2019、および 2022 用 Microsoft Visual C++ 再頒布可能パッケージ(x86)

ActiveX(64bit)

bin\x64\

AvsActiveXCtl.ocx

AvsGuiCtl50.dll

icuin55.dll

icuuc55.dll

icudt55.dll

base2 (フォルダ)

JapanColor2001Coated.icc

AxInterop.AVSACTIVEXCTLLib.dll(.NETから利用する場合)

Interop.AVSACTIVEXCTLLib.dll(.NETから利用する場合)

Visual Studio 2015、2017、2019、および 2022 用 Microsoft Visual C++ 再頒布可能パッケージ(x64)

コマンドプロンプトを開いて次のようにActiveXコントロールを登録してください。

(64bit版 ocx)

> %systemroot%\System32\regsvr32 AvsActiveXCtl.ocx

(32bit版 ocx)

> %systemroot%\SysWoW64\regsvr32 AvsActiveXCtl.ocx

※使用するregsvr32.exeのパスは、32bit版と64bit版で異なるのでご注意ください。

4.4. 64bitコントロール

32bit/64bitの取扱い

開発の場面

説明

対処

VS2019 フォームデザイナー上でのデザイン(.NET Framework)

・Windowsフォームアプリケーションのデザイン時には Visual Studio が参照するPATH環境変数上にコントロールの関連DLLが存在している必要があります。

・Visual Studio 2019 は32bitアプリケーションですので 32bit版しかフォームデザイナーで利用できません。

・Windows フォームデザイン時には、32bitDLL(bin\Win32)をPATHに追加した状態で、Visual Studio を起動します。

・64bit 版のWindows フォームアプリケーション開発時にコントロールのレイアウトを行う場合は、32bit版のWindowsフォームアプリケーションとして開発・レイアウトを行ったのちに、64bit版としてビルドしてください。

VS2022フォームデザイナー上でのデザイン(.NET Framework)

・Windowsフォームアプリケーションのデザイン時には Visual Studio が参照するPATH環境変数上にコントロールの関連DLLが存在している必要があります。

・Visual Studio 2022 は64bitアプリケーションですので 64bit版しかフォームデザイナーで利用できません。

・Windows フォームデザイン時には、64bitDLL(bin\x64)をPATHに追加した状態で、Visual Studio を起動します。

・32bit 版のWindows フォームアプリケーション開発時にコントロールのレイアウトを行う場合は、64bit版のWindowsフォームアプリケーションとして開発・レイアウトを行ったのちに、32bit版としてビルドしてください。

Visual Studio 上でのデバッグ実行

・実行時にプラットフォーム(x86、x64)に合わせたSDKの関連DLLが参照できる必要があります。

・プロジェクトの出力先に、x86、x64のそれぞれの出力先フォルダに、bin\x86、bin\x64以下の関連DLLやリソースをコピーしてください。

・もしくは、x86、x64にあわせて、PATH環境変数にbin\x86、bin\x64をそれぞれ追加してVisual Studio がそれを参照できるようにしてください。(x86、x64にあわせて切り替える。同時に指定されていると動作しません。)

プロジェクトへの参照追加

プロジェクト上でプラットフォーム(x86、x64)にあわせたDLLのファイル参照を追加する必要があります。

・Visual Studio 上ではプラットフォーム個別にDLLのファイル参照を指定する事ができません。「プロジェクトへの参照追加について」に記載した方法でプラットフォームにあわせて指定してください。

プロジェクトへの参照追加について

    <Reference Include="AvsDotNetGuiCtl">

      <HintPath Condition=" '$(Platform)' == 'x86' ">..\..\Windows-VS2019\Win32\Release\AvsDotNetGuiCtl.dll</HintPath>

      <HintPath Condition=" '$(Platform)' == 'x64' ">..\..\Windows-VS2019\x64\Release\AvsDotNetGuiCtl.dll</HintPath>

    </Reference>

ここではHintPathで条件指定を行い切り替えていますが、ItemGroupで切り替えることも可能です。

この方法の利点は x86、x64それぞれプロジェクトを用意する必要がない点です。一方手動で編集するため、間違いやすい、Visual Sutido で不意に編集を行うと編集が上書きされてしまう等のデメリットがあります。プロジェクトファイルに詳しくなければ1つめの方法をお勧めいたします。SDK添付のサンプルプロジェクトではこちらの方法を使用しています。

参考) https://docs.microsoft.com/ja-jp/visualstudio/ide/how-to-configure-projects-to-target-platforms?view=vs-2019

コーディング上の注意点

4.5. 座標系について

以下の3つの座標系があります。

クライアント座標はコントロール上の座標でX座標とY座標で一意に決まります。一方、論理座標およびビュー座標はページ上の座標です。LogicalPointクラスで表現され、ページ番号とX座標とY座標を含みます。

クライアント座標

論理座標

ビュー座標

PDF Viewer API

原点

コントロールの左上

用紙の左上

表示上の用紙左上

表示上の用紙左上

座標軸正方向

表示上の右下

用紙の右下

表示上の右下

表示上の右下

長さの単位

TWIP

TWIP

TWIP

TWIP

連続ページや見開き表示など、コントロールの表示状態によって、クライアント座標と、論理座標およびビュー座標との対応関係は実行時に変化します。下記の図において、青はクライアント座標系、赤は論理座標系、緑はビュー座標系を表しています。

Please enter alt text.

HitTestメソッドやMouseDownCイベント等で取得される位置はクライアント座標であるものがあります。クライアント座標から論理座標/ビュー座標に変換するには ClientToLogicalメソッドを利用してください。

論理座標は用紙の左上原点(0, 0)で右下方向にプラス、単位はTWIP(1TWIP=1/20ポイント)になります。表示上の左上が原点となるPDF Viewer APIの座標系とは若干異なることになりますので注意してください。

ビュー座標系は表示上の原点が用紙の左上となります。表示上の位置指定を行う場合はこちらを利用すると便利です。

論理座標とビュー座標は実行に ViewCoordプロパティで切り替えることができます(false…論理座標、true…ビュー座標)。注釈の作成など位置座標を指定する場合に、アプリケーションに都合のよい座標系をご利用ください。コントロール内部で指定された座標系にあわせて相互変換を行います。

■ViewCoordプロパティの影響を受けるプロパティ、メソッド

名称

影響を受けるデータ

ClientToLogical

戻り値(LogicalPoint)

ClientToLogicalRect

戻り値(System.Drawing.Rectangle)

GetCursorPosition

戻り値(LogicalPoint)

ScrollToPosition

引数lPos(LogicalPoint)

CreateObject

引数object (AvsObject)のCoordinatesプロパティ

ModifyObjects

引数object (AvsObject)のCoordinatesプロパティ

※ids引数で指定される注釈オブジェクトが存在するページが異なる場合、最初の注釈オブジェクトのページ回転にあわせて座標を解釈します。

注釈オブジェクトのCoordinatesプロパティの編集時に注釈が存在するページが異なる場合は、複数回の呼び出しに分けて指定してください。

GetObjectInfo

戻り値(AvsObject)のCoordinatesプロパティ

GetTextInfoInRect

戻り値(ArrayList)の要素AvsTextInfo のRectプロパティ、WritingModeプロパティ

GetSelectedTextInfo

戻り値(ArrayList)の要素AvsTextInfo のRectプロパティ、WritingModeプロパティ

SelectTextString

引数 start(LogicalPoint)、end(LogicalPoint)

MakeBmpPage

引数 rcClip (System.Drawing.Rectangle)

MakeJpegPage

引数 rcClip (System.Drawing.Rectangle)

MakePngPage

引数 rcClip (System.Drawing.Rectangle)

MakeSvgPage

引数 rcClip (System.Drawing.Rectangle)

FitViewToRect

引数 lPos1, lPos2 (LogicalPoint)

 ※GetPageWidth/GetPageHeightメソッドは常に論理座標系でのページ幅、高さを返します。

 ※MakeTiffPageメソッドは常に論理座標系にてrcClip引数を解釈します。

4.6. タッチ操作

4.7. PDF保存時の暗号化

PDFバージョン

暗号方式

1.3

40bit RC4 ※

1.4

128bit RC4

1.5

128bit RC4

1.6

128bit AES

1.7

256bit AES

2.0

256bit AES

※ユーザーパスワードのみの場合、128bit RC4となります。

4.8. 文字列検索

4.9. オブジェクトID

注意事項