我正在开发一个应用程序,简而言之,它处理PDF表单。提交数据格式为XFDF。到目前为止,这么好,但我从客户那里得到了一些非常奇怪的行为。
PDF查看器是IE中的Adobe Reader(目前为11.0.6)。这是一个内部应用程序,因此现在无需支持任何其他内容。 PDF是在服务器上动态创建的,因此我必须在浏览器而不是独立应用程序中执行此操作。
工作流程如下:
步骤8中实际发生的是:浏览器请求状态页面,但是当它到达页面中引用的CSS样式表时,它会发送:
GET /static/app.css HTTP/1.1
Accept: text/css, */*
Acrobat-Version: 11.0.6
Accept-Language: en-GB
Content-Type: application/vnd.adobe.xfdf; charset=utf-8
Content-Length: 1824
Referer: http://application/report/2014-03-28/925/
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: application
DNT: 1
Connection: Keep-Alive
Cookie: sessionid=12345
请注意,此请求包含Content-Type和Content-Length标头,这对于GET请求来说是不常见的,但是有 no 请求正文,而不是一个字节,而不是1824个。我的服务器是IIS,它使用400 Invalid Verb响应此请求(不确定为什么会出现特定错误,但400这样的错误肯定是合理的。)
状态页面本身的请求不包含这些标头;这是完全正确的。出于某种原因,样式表请求会在之前的两个请求中重复提交表单中的标题。
遗憾的是,很多文档都没有通过HTTP发送PDF表单数据,但据我所知,我正在做的一切正确。我认为这是Adobe Reader插件和/或IE中的错误;任何人都可以想到解决它的方法吗?
答案 0 :(得分:0)
提交表单数据时需要注意几点。
a)你的提交命令是什么样的?
根据Acrobat JavaScript文档,如果您提交为FDF或XFDF,则提交的URL必须以#FDF结尾。这将确保传输(X)FDF。如果省略该加载项,Acrobat / Reader可能会以HTML POST格式提交。
b)只要您在webbrowser下运行Acrobat / Reader,答案就应该没问题。否则,Reader不理解服务器的返回码;相反,你应该返回PDF或FDF。
从Adobe网站获取FDFToolkit可能会有所帮助。即使你决定不使用它,文档也会对事情的运作方式做出正确的解释。