如何在servlet中获取以HTML格式提交的PDF格式的输入数据?

时间:2012-11-22 04:08:00

标签: pdf servlets

我有一个PDF表单,其中包含一些字段,如下所示 PDF download link
输入文本字段名称为“名称”
输入复选框字段名称为“语言”
输入单选按钮字段名称为“性别”
选择组合框字段名称作为“作业”
以HTML格式提交按钮操作,并将网址提交至http://local.test.com/servlet1

和servlet1,代码为blow

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    for(Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
        String paraName = (String) e.nextElement();
        String paramValue = URLDecoder.decode(new String(request.getParameter(paraName).getBytes("iso-8859-1")), "UTF-8");
        System.out.println(paraName + "=" + paramValue);
    }               
}

比我输入PDF表格中的一些数据并点击提交,我得到如下的系统输出

SystemOut     O sex=M
SystemOut     O input7=eric
SystemOut     O input34=zhTW
SystemOut     O job=1

“性别”(单选按钮)和“作业”(选择组合)字段可以,但为什么“名称”(输入文本)和“语言”(复选框)的字段名称更改为“inputXX” ?

我尝试使用

request.getParameter("name")

我得到了空......

有什么建议吗? 非常感谢...

3 个答案:

答案 0 :(得分:0)

我检查了您的表单,我看到名称为“name”的字段以及提交将数据发布到URL的按钮。其中一个提交按钮限制了发送到服务器的参数数量。

我没有看到任何即时错误,但我建议您使用以下Servlet来调试您的应用程序:http://itextpdf.com/examples/iia.php?id=169

这个servlet会在GET请求的情况下将所有参数显示为查询字符串(但初看起来,PDF配置为POST数据);如果是POST,它将显示发送的所有数据。通过这种方式,您可以找出问题所在。

让我们发布。

答案 1 :(得分:0)

使用标识符name导出文本字段input7的值时,PDF查看器只执行要求执行的操作,因为名称字段的字段字典包含请求字段的条目要使用键input7导出的值。其他一些领域也是如此。

详细说明字段字典(对象106 0)包含以下条目:

/Ff 4194306
/F  4
/Type   /Annot
/Subtype    /Widget
/T  name
/AP Dictionary
/P  42 0 R
/MK Dictionary
/BS Dictionary
/FT /Tx
/Rect   [54.8909, 688.564, 161.891, 705.564]
/DA /Helv 0 Tf 0 g
/TM input7

看看最后一个条目。 / TM密钥定义为(参见ISO 32000-1:2008第12.7.3.1节):

  

text string (可选; PDF 1.3)应使用的映射名称   从文档中导出交互式表单字段数据时

如果您不希望使用该input7键导出字段值,请从字段定义中删除 / TM 条目。

答案 2 :(得分:0)

PDF文件是由Acrobat X Pro从HTML文件翻译而来的,我注意到一些文件,例如“name”......

<input id="name" type='text'>

比我更新HTML文件

<input name="name" type='text'>

再次翻译成PDF并提交,现在一切正常〜:)