1

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 イベントに接続する方法がわかりません。したがって、どこから始めればよいかわからないため、これは「これまでのコードを表示」できるケースではありません。

4

0 に答える 0