1
填補我有我需要從Java代碼填寫一些表格字段的PDF文件。我使用的iText 2.1.7庫這個,還有這個代碼:PDF形式iText的錯誤
PdfReader reader = new PdfReader("C:\\Users\\igor\\Desktop\\test.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("testout.pdf"), '\0', true);
AcroFields fields = stamper.getAcroFields();
fields.setField("txtFirstName", "Milan");
stamper.close();
,我得到這個錯誤信息:
org.w3c.dom.DOMException: INVALID_CHARACTER_ERR: An invalid or illegal XML character is specified.
at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.checkQName(CoreDocumentImpl.java:2582)
at com.sun.org.apache.xerces.internal.dom.ElementNSImpl.setName(ElementNSImpl.java:117)
at com.sun.org.apache.xerces.internal.dom.ElementNSImpl.<init>(ElementNSImpl.java:80)
at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.createElementNS(CoreDocumentImpl.java:2095)
at com.lowagie.text.pdf.XfaForm$Xml2SomDatasets.insertNode(Unknown Source)
at com.lowagie.text.pdf.AcroFields.setField(Unknown Source)
at com.lowagie.text.pdf.AcroFields.setField(Unknown Source)
at proba.main(proba.java:21)
不是由我創建的PDF,所以我不知道是什麼文件使用的表單類型(如果我理解正確,則有FDF和XFA表單)。由於PDF是不是我創造,我用這個工具http://support.persits.com/pdf/demo_formfields.asp找出表單字段的名稱,它給了我這樣的:
applicationPrepaid[0].#pageSet[0].Pagina1[0].txtFirstName[0]
Pdftk工具給了我只是txtFirstName
的字段名。我試了兩個全名,只是txtFirstName
,它不起作用。幫幫我?
是否也能提供檢查的PDF?此外,您是否也嘗試過使用當前的iText版本(即5.3.x版本)?當你使用舊的iText版本時,這應該是你的第一次測試。如果它在那裏工作,它可能是圖書館中的一個bug,或者是PDF庫中的一個異常,同時它已經被強化。 – mkl
我不能提供PDF :(公司的祕密。我會盡量iText的當前版本只是爲了看看問題是否在庫中,但我不能使用它,因爲AGPL許可證。 – stojke
問題仍然存在,即使iText的當前版本。我必須做一些錯誤的... – stojke