Aspose.PDF for .NET の COM Interop経由
このトピックの情報は、次のプログラミング言語のいずれかでCOM Interopを介してAspose.PDF for .NETを使用したいシナリオに適用されます:
- ASP
- Delphi
- JScript
- Perl
- PHP
- PowerBuilder
- Python
- VBScript
- Visual Basic
- C++
Aspose.PDF for .NETは.NETフレームワークの制御下で実行され、これをマネージドコードと呼びます。上記のすべての言語で書かれたコードは.NETフレームワークの外で実行され、これをアンマネージドコードと呼びます。アンマネージドコードとAspose.PDFの間の相互作用は、COM Interopと呼ばれる.NETの機能を介して行われます。
Aspose.PDFオブジェクトは.NETオブジェクトですが、COM Interopを介して使用されると、プログラミング言語内でCOMオブジェクトとして表示されます。したがって、Aspose.PDF for .NETを使用し始める前に、プログラミング言語でCOMオブジェクトを作成および使用する方法を知っておくことが最善です。
- COMの世界では、COMサーバーとCOMクライアントを区別します。COMサーバーはCOMクラスを保存し、COMクライアントはCOMサーバーにクラスインスタンス、つまりCOMオブジェクトを要求します。
- COMクライアント、または単にクライアントアプリケーションは、COMクラスの内容について何かを知っているか、またはそのメソッドやプロパティについて全く知らない場合があります。したがって、クライアントアプリケーションは、コンパイル/ビルド時または実行時にのみCOMクラスの構造を発見できます。「発見」のプロセスはバインディングとして知られ、早期バインディングと遅延バインディングがあります。
- 簡単に言えば、COMクラスはブラックボックスのようなもので、それを操作するにはタイプライブラリが必要です。このバイナリファイルにはCOMクラスのメソッド、プロパティの説明が含まれており、COMオブジェクトを操作することをサポートする高水準言語は、タイプライブラリを追加するための構文表現を持つことがよくあります。たとえば、C++では#importです。
- タイプライブラリは早期バインディングに使用されます。
- COMオブジェクトは、ディスパッチインターフェース(dispinterface)とそのvtable(仮想関数テーブル)の2つの方法でメソッドとプロパティを公開できます。
- dispinterface内では、各メソッドとプロパティは一意のメンバーによって識別されます。このメンバーは関数のディスパッチ識別子(またはDispID)です。
- vtableは、COMクラスインターフェースがサポートする関数へのポインタのセットです。
- 両方のインターフェースを介してメソッドを公開するオブジェクトは、デュアルインターフェースをサポートします。
- 両方のバインディングタイプには利点があります。早期バインディングは、パフォーマンスの向上とコンパイル時の構文チェックを提供します。遅延バインディングは、COMクラスの将来のバージョンと互換性を持たせることを意図してクライアントを作成する場合に最も有利です。遅延バインディングでは、タイプライブラリからの情報がクライアントに「ハードワイヤード」されていないため、クライアントがコード変更なしでCOMクラスの将来のバージョンで動作できるという自信が高まります。
- 遅延バインディングメカニズムには大きな利点があります。COM DLLの作成者が異なる関数インターフェースレイアウトで新しいバージョンをリリースすることを決定した場合、そのメソッドを呼び出すコードは、メソッドがもはや利用できない場合を除いてクラッシュしません。たとえvtableが異なっていても、遅延バインディングは新しいDISPIDsを発見し、適切なメソッドを呼び出すことができます。
習得する必要があるトピックは次のとおりです:
Aspose.PDF for .NETをインストールし、COM Interopに登録されていることを確認する必要があります(アンマネージドコードから呼び出せるようにするため)。
COM Interop用にAspose.PDF for .NETを手動で登録するには:
- スタートメニューから、すべてのプログラムを選択し、次にMicrosoft Visual Studio、Visual Studio Tools、最後にVisual Studioコマンドプロンプトを選択します。
- アセンブリを登録するためのコマンドを入力します:
- .NET Framework 4.8.1
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net4.8.1\Aspose.PDF.dll” /codebase
- .NET 6.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net6.0\Aspose.PDF.dll” /codebase
- .NET 7.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net7.0\Aspose.PDF.dll” /codebase
- .NET 8.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net8.0\Aspose.PDF.dll” /codebase
- .NET Standard 2.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\netstandard2.0\Aspose.PDF.dll” /codebase
/codebaseは、Aspose.PDF.dllがGACにない場合にのみ必要です。このオプションを使用すると、regasmはアセンブリのパスをレジストリに追加します。
regasm.exeは.NET Framework SDKに含まれているツールです。すべての.NET Framework SDKツールは、*\Microsoft .NET\Framevork<FrameworkVersion>*ディレクトリにあります。たとえば、C:\Windows\Microsoft .NET\Framework\v4.0.30319です。Visual Studio .NETを使用している場合:
スタートメニューから、プログラムを選択し、次にVisual Studio 2022、最後にVS 2022用の開発者コマンドプロンプトを選択します。
必要な環境変数が設定されたコマンドプロンプトが実行されます。
ProgIDs
ProgIDは「プログラム識別子」の略です。オブジェクトを作成するために使用されるCOMクラスの名前です。ProgIDはライブラリ名「Aspose.PDF」とクラス名で構成されています。
タイプライブラリ
プログラミング言語(たとえばVisual BasicやDelphi)がCOMタイプライブラリを参照することを許可する場合、Aspose.PDF.tlbへの参照を追加し、オブジェクトブラウザでAspose.PDF for .NETのすべてのクラス、メソッド、プロパティ、および列挙を表示します。
TLBファイルを生成するには:
- .NET Framework 4.8.1
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net4.8.1\Aspose.PDF.dll” /tlb: “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net4.8.1\Aspose.PDF.tlb” /codebase
- .NET 6.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net6.0\Aspose.PDF.dll” /tlb: “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net6.0\Aspose.PDF.tlb” /codebase
- .NET 7.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net7.0\Aspose.PDF.dll” /tlb: “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net7.0\Aspose.PDF.tlb” /codebase
- .NET 8.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net8.0\Aspose.PDF.dll” /tlb: “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\net8.0\Aspose.PDF.tlb” /codebase
- .NET Standard 2.0
regasm “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\netstandard2.0\Aspose.PDF.dll” /tlb: “C:\Program Files\Aspose\Aspose.PDF for .NET\bin\netstandard2.0\Aspose.PDF.tlb” /codebase
COMオブジェクトの作成
COMオブジェクトの作成は、通常の.NETオブジェクトの作成に似ています:
'Instantiate Pdf instance by calling its empty constructor
Dim document
Set document = CreateObject("Aspose.Pdf.Document")
作成後、COMオブジェクトのようにオブジェクトのメソッドとプロパティにアクセスできます:
'Add page to the document
document.Pages.Add()
一部のメソッドにはオーバーロードがあり、最初のメソッドを除いて、数値のサフィックスが追加されてCOM Interopによって公開されます。たとえば、Document.SaveメソッドのオーバーロードはDocument.Save、Document.Save_2などになります。
詳細については、このドキュメントの後半にある言語固有の記事を参照してください。
ラッパーアセンブリの作成
Aspose.PDF for .NETのクラス、メソッド、プロパティを多く使用する必要がある場合は、ラッパーアセンブリを作成することを検討してください(C#または他の.NETプログラミング言語を使用)。ラッパーアセンブリは、アンマネージドコードからAspose.PDF for .NETを直接使用するのを避けるのに役立ちます。
良いアプローチは、Aspose.PDF for .NETを参照する.NETアセンブリを開発し、それとのすべての作業を行い、アンマネージドコードに対して最小限のクラスとメソッドのセットのみを公開することです。アプリケーションは、その後、ラッパーライブラリのみで動作する必要があります。
COM Interopを介して呼び出す必要があるクラスとメソッドの数を減らすことで、プロジェクトが簡素化されます。COM Interopを介して.NETクラスを使用するには、しばしば高度なスキルが必要です。