无法保存XFDF表单的POST数据内容

时间:2014-01-08 02:56:24

标签: java spring pdf itext acrobat

我们能够从XFDF表单保存POST数据内容。使用PDF内的按钮触发POST事件。

我们在服务器端使用 Java + SPRING

例外:

java.io.IOException: Expected > for tag: <{1}/> near line 1, column 13

在itext演示页面中也观察到同样的错误!这是:http://itextpdf.com:8180/book/xfdf

请帮助我们找到解决方案。

[更详情]

错误可在iText演示页面中重现。 网址:http://itextpdf.com:8180/book/xfdf 我们可以在提交表单后在ajax响应部分注意到它。

顺便说一下,这里是我们应用程序中的输入,输出和源代码。

HTTP POST输入数据:

%FDF-1.2
1 0 obj
<</FDF<</F<</Type/Filespec/F(http///localhost/8081/triplefin/document/download/4)/UF(http///localhost/8081/triplefin/document/download/4)>>/Fields[<</T(pat_name)/V(sample)>><</T(member_number)>><</T(p_add)>><</T(p_city)>><</T(p_state)>><</T(p_zip)>><</T(pat_phone)>><</T(pat_dob)>><</T(doc_name)/V(provider1)>><</T(doc_add)/V(7/15 krishna nagar)>><</T(doc_city)/V(coimbatore)>><</T(doc_state)/V(641041)>><</T(doc_zip)>><</T(doc_phone)/V(1232131)>><</T(doc_fax)/V(023423423)>><</T(specialty)>><</T(npi_number)>><</T(drug)>><</T(drug_dosage)>><</T(rx_direction)>><</T(Diagnosis)>><</T(pat_start_date)>><</T(alternatives_used)>><</T(non_formulary_reason)>><</T(addi_treatment)>><</T(doc_signature)>><</T(doc_sig_date)>>]>>>>
endobj

trailer
<</Root 1 0 R>>
%%EO

详细的例外消息:

java.io.IOException: Expected > for tag: <{1}/> near line 1, column 13
    at com.itextpdf.text.xml.simpleparser.SimpleXMLParser.throwException(SimpleXMLParser.java:594)
    at com.itextpdf.text.xml.simpleparser.SimpleXMLParser.go(SimpleXMLParser.java:353)
    at com.itextpdf.text.xml.simpleparser.SimpleXMLParser.parse(SimpleXMLParser.java:607)
    at com.itextpdf.text.xml.simpleparser.SimpleXMLParser.parse(SimpleXMLParser.java:682)
    at com.itextpdf.text.xml.simpleparser.SimpleXMLParser.parse(SimpleXMLParser.java:648)
    at com.itextpdf.text.pdf.XfdfReader.<init>(XfdfReader.java:113)

消息代码:

public void savePostDataToPdf(String pdfFileAbsolutePathString, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{

    XfdfReader xfdfReaderObject = new XfdfReader(request.getInputStream()); //ERROR IS HERE!

}

1 个答案:

答案 0 :(得分:0)

问题是您是否使用XFDF阅读器发布了FDF数据。 FDF和XFDF是不同的格式,XFDF阅读器将其视为XML字符串并抛出有关未封闭标记的错误。

如果您只是提供FDF文件,那么您需要以下内容:

FdfReader fdfReaderObject = new FdfReader(request.getInputStream());