我正在使用 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 中的一个对象的方法的情况下,这很好用。我的问题是:如何将我的应用程序代码与其中一些对象提供的事件接口?例如,当用户单击文档中的书签时,甚至会发生 JS - 我将如何为类似的事情提供事件处理程序?
我知道如何实现出站接口并通过 ConnectionPointContainer/FindConnectionPoint 将其连接到 COM 对象。但是我不知道如何连接到我正在访问的对象上的 JS 事件(通过上面的 GetJSObject 之类的调用),该对象位于 COM 对象接口的另一侧。所以这不是我可以“显示我的代码到目前为止”的情况,因为我不知道从哪里开始。