我有以下情况:
<object data="foo.pdf" src="foo.pdf">
鉴于:
object
的{{1}}对象的引用使用此AxAcroPDFLib.AxAcroPDF
对象,我需要操作表单字段,阅读文本以及执行与AxAcroPDFLib.AxAcroPDF
API完全合理的其他内容,然后单击网页上的按钮(使用IE自动化)将表单字段序列化为XML并将其保存到Web服务器。
由于业务需求,我需要从用户的角度测试这种“端到端”,所以我不能只在XML中填充值,看看服务器是否接受它们。
有没有办法从AcroExch.PDDoc
引用访问已打开的PDF文档的AcroExch.PDDoc
API, 将PDF保存到磁盘上的文件并打开它使用AxAcroPDFLib.AxAcroPDF
?
问题在于,如果我将其保存到磁盘并在Acrobat中重新打开它,据我所知,该文件不能用于保存表单字段数据并将其提交给Web服务器。 (或者可以?)
答案 0 :(得分:1)
有没有办法访问打开的PDF的AcroExch.PDDoc API 来自AxAcroPDFLib.AxAcroPDF参考的文档,不保存 PDF到磁盘上的文件并使用AcroExch.App打开它?
我认为你不能用AxAcroPDFLib.AxAcroPDF
做到这一点。检查"Developing for Adobe® Reader®",第25页(&#34; OLE自动化&#34;):
在Windows上, Adobe Reader支持的唯一 OLE自动化是 PDF浏览器控件界面,可让您处理PDF 将文档作为外部应用程序中的ActiveX文档。这个 可以加载文件,移动到文件中的各个页面 文件,突出显示文本选择,并指定各种打印和 显示选项,如下所示。
此外,还有支持的API的详细列表,您也可以使用OleView确认。
可能可以开发Adobe Acrobat插件,但是:
为Adobe Reader编写的任何插件都必须启用Reader,这样 意味着您需要获得Adobe的许可和许可 系统
答案 1 :(得分:0)
我已经进行了搜索,我找到了this VBScript example:
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等价物运行它。