如何从 Internet Explorer 嵌入式对象访问完整的 Adobe Acrobat AcroExch COM



我有以下情况:

  • Windows 7 SP1 32 位上的 Internet Explorer 9
  • Adobe Acrobat Professional 版本 10
  • 一个包含如下代码的网页:

<object data="foo.pdf" src="foo.pdf">

鉴于:

  • 系统上的默认PDF阅读器是Adobe Acrobat。
  • Adobe Reader的浏览器插件被禁止使用Acrobat的插件
  • 插件加载时 Acrobat.exe 正在运行
  • 我正在使用Internet Explorer的COM自动化(来自Ruby,但这并不重要)来获取对object AxAcroPDFLib.AxAcroPDF对象的引用

使用此AxAcroPDFLib.AxAcroPDF对象,我需要操作表单字段、读取文本以及执行与 AcroExch.PDDoc API 完全合理的其他操作,然后单击网页上的按钮(使用 IE 自动化)将表单字段序列化为 XML 并保存到 Web 服务器。

由于业务需求,我需要从用户的角度测试这种"端到端",所以我不能只在XML中填充值并查看服务器是否采用它们。

有没有办法从AxAcroPDFLib.AxAcroPDF参考访问打开的PDF文档的AcroExch.PDDoc API,而无需将PDF保存到磁盘上的文件并使用AcroExch.App打开它?

问题是,据我所知,如果我将其保存到磁盘并在 Acrobat 中重新打开它,该文件将无法用于保存表单字段数据并将其提交到 Web 服务器。(或者可以吗?

有没有办法访问打开的PDF的AcroExch.PDDoc API。 来自 AxAcroPDFLib.AxAcroPDF 参考的文档,而不保存 PDF到磁盘上的文件并使用 AcroExch.App 打开它?

我认为你不能用AxAcroPDFLib.AxAcroPDF做到这一点.查看"开发 Adobe® Reader®",第 25 页("OLE 自动化"):

在Windows上,Adobe Reader支持的唯一OLE自动化是 PDF 浏览器控件界面,使您能够处理 PDF 文档作为外部应用程序中的 ActiveX 文档。这 可以加载文件,移动到 文件,突出显示文本选择,并指定各种打印和 显示选项,如下所示。

此外,还有受支持的 API 的详细列表,您还可以使用 OleView 进行确认。

也许可以开发Adobe Acrobat插件,但是:

任何为 Adobe Reader 编写的插件都必须启用 Reader,这 表示您需要获得 Adobe 的许可和许可 系统。

我已经进行了搜索,我找到了这个VBScript示例:

Set acrobatApplication = CreateObject("AcroExch.App")
Set AVDoc = CreateObject("AcroExch.AVDoc")
Set gPDDoc = CreateObject("AcroExch.PDDoc")
If gPDDoc.Open("c:adobe.pdf") Then
Set jso = gPDDoc.GetJSObject
Set oAdd = jso.addField("FirmaField1", "signature", 0, Array(20, 100,
100, 20))
Set oSign = jso.getField("FirmaField1")
Set ppklite = jso.security.getHandler("Adobe.PPKLite", True)
ppklite.login "1111", "c:certificate_file.pfx"
oSign.signatureSign ppklite
ppklite.logout
end if

很明显,他在那里使用AcroExch.PDDoc。也许你可以从浏览器或Javascript等效物上运行它。

最新更新