Adobe Acrobat の COM インターフェイスを使用して、アプリケーションが提供するウィンドウでホストされている PDF ドキュメントのコンテンツを操作しています。
Adobe は、2006 年頃に COM インターフェイスの開発を凍結したようです。Acrobat のタイプ ライブラリは、かなり限定された機能セットへのアクセスを提供しますが、COM インターフェイスは、Acrobat アプリケーションのメニュー + ツールバーで利用可能な多くの機能への直接アクセスを提供しません。最近では、JavaScript API を介して作業することを期待しています。
Acrobat タイプ ライブラリを使用すると、特定のドキュメントに関連付けられた JavaScript オブジェクトにアクセスできます。たとえば、次の例ではドキュメントの最初のページを上下逆にします。
[...]
var
Doc : CAcroPDDoc; // interface Acrobat document
vJS : OleVariant; // access to JavaScript object
begin
Doc := CoAcroPDDoc.Create;
Doc.Open(AFileName);
try
vJS := Doc.GetJSObject;
try
vJS.SetPageRotations(0, 0, 180);
finally
VarClear(vJS);
end;
finally
Doc := Nil;
end;
end;
私がやりたいことは、Acrobat JavaScript API のオブジェクトの 1 つのメソッドを呼び出すことだけである場合には、うまくいきます。私の質問は、これらのオブジェクトの一部が提供するイベントとアプリケーションのコードをどのようにやり取りするのですか? たとえば、ユーザーがドキュメントのブックマークをクリックしたときに発生する JS もあります。そのようなイベント ハンドラーを提供するにはどうすればよいでしょうか。
アウトバウンド インターフェイスを実装し、それを ConnectionPointContainer/FindConnectionPoint 経由で COM オブジェクトに接続する方法を知っています。しかし、COM オブジェクト インターフェイスの反対側にある (上記の GetJSObject のような呼び出しを介して) アクセスしているオブジェクトの JS イベントに接続する方法がわかりません。したがって、どこから始めればよいかわからないため、これは「これまでのコードを表示」できるケースではありません。