.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 |
32bit/64bitアプリ開発 |
〇 |
〇 |
32bitフォームデザイン/ツールパネルへのコントロール登録 |
〇 |
× |
64bitフォームデザイン/ツールパネルへのコントロール登録 |
× |
〇 |
32bit/64bitアプリ開発 |
× |
〇 |
32bitフォームデザイン/ツールパネルへのコントロール登録 |
× |
× |
64bitフォームデザイン/ツールパネルへのコントロール登録 |
× |
× |
.NETでは、フォームデザイナーでネイティブDLLを利用するコントロールがサポートされないためです。このためGUIの開発には直接コードを記述する、もしくは .NET Frameworkのフォームデザイナーでデザインし生成されたコードを流用するなどの工夫が必要になります。なお、WPFなど直接フォームデザイナーにコントロールのDLLをロードしない場合は問題ありません。
コンポーネント名 |
AntennaHouse PDFViewer ActiveX Control |
---|---|
OCXファイル |
AvsActiveXCtl.ocx |
検証済みの環境 |
Microsoft Visual Studio 2019 (Visual C#) |
依存するファイルは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版で異なるのでご注意ください。
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添付のサンプルプロジェクトではこちらの方法を使用しています。
コーディング上の注意点
以下の3つの座標系があります。
クライアント座標はコントロール上の座標でX座標とY座標で一意に決まります。一方、論理座標およびビュー座標はページ上の座標です。LogicalPointクラスで表現され、ページ番号とX座標とY座標を含みます。
クライアント座標 |
論理座標 |
ビュー座標 |
PDF Viewer API |
|
原点 |
コントロールの左上 |
用紙の左上 |
表示上の用紙左上 |
表示上の用紙左上 |
座標軸正方向 |
表示上の右下 |
用紙の右下 |
表示上の右下 |
表示上の右下 |
長さの単位 |
TWIP |
TWIP |
TWIP |
TWIP |
連続ページや見開き表示など、コントロールの表示状態によって、クライアント座標と、論理座標およびビュー座標との対応関係は実行時に変化します。下記の図において、青はクライアント座標系、赤は論理座標系、緑はビュー座標系を表しています。
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引数を解釈します。
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となります。
注意事項