嘗試爲包含兩個英鎊符號的字段名稱設置值時,我遇到了iText的奇怪錯誤。問題是我無法控制原始表單字段名稱。iText當字段名稱有兩英鎊符號時投擲XML錯誤
任何人都知道如何解決這個問題?我嘗試重命名這些字段,但它沒有將字段重命名。
這將報錯了
form.SetField("form1[0].#subform[8].#area[12].Line4_FirstName3[4]", "Bill");
但是,如果字段名稱相似,但只有一個井號它不
form.SetField("form1[0].#subform[8].Line4_FirstName3[4]", "Bill");
異常類型「System.Web.HttpUnhandledException」被拋出。 ---> System.Xml.XmlException:名稱中不能包含'#'字符,十六進制值0x23。 at System.Xml.XmlDocument.CheckName(String name) at System.Xml.XmlElement..ctor(XmlName name,Boolean empty,XmlDocument doc) at System.Xml.XmlDocument.CreateElement(String prefix,String localName,String的namespaceURI) 在System.Xml.XmlDocument.CreateElement(字符串名稱) 在iTextSharp.text.pdf.XfaForm.Xml2SomDatasets.InsertNode(XmlNode的N,字符串SHORTNAME) 在iTextSharp.text.pdf.AcroFields.SetField(字符串名稱,字符串值,字符串顯示) at iTextSharp.text.pdf.AcroFields.SetField(String name,String value)
這是來自iText 4.1.2.0。
當我嘗試重命名該字段以刪除「#area [12]」的第二個磅符號類型測試時,它不重命名。
PdfReader reader2 = new PdfReader(pdfTemplate);
using (FileStream fs = new FileStream(TemporaryFile, FileMode.Create)) {
PdfStamper stamper = new PdfStamper(reader2, fs);
AcroFields pdfForm = stamper.AcroFields;
//Dim de As New DictionaryEntry
foreach (DictionaryEntry de in pdfForm.Fields) {
pdfForm.RenameField(de.Key.ToString(), Guid.NewGuid().ToString("N"));
}
stamper.Close();
}
您正在填寫一個XFA表單,就好像它是一個AcroForm。這個問題的答案可能需要5到10頁。不幸的是,我現在沒有時間在這個主題上寫5到10頁。 – 2013-05-10 08:26:39
感謝布魯諾。這是一個很好的提示/信息。在與AcroForms合作這麼久之後,我已經忘記了這種形式的風格。現在,我必須同時處理這兩個問題。 – jon333 2013-05-10 15:39:08