尝试为包含两个井号的字段名称设置值时,我遇到了 iText 的一个奇怪错误。问题是我无法控制原始表单字段名称。
有人碰巧知道如何解决这个问题吗?我试过重命名字段,但它没有重命名字段。
这将出错
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,不能包含在名称中。在 System.Xml.XmlDocument.CheckName(String name) 在 System.Xml.XmlElement..ctor(XmlName name, Boolean empty, XmlDocument doc) 在 System.Xml.XmlDocument.CreateElement(String prefix, String localName, String namespaceURI) 在System.Xml.XmlDocument.CreateElement(String name) at iTextSharp.text.pdf.XfaForm.Xml2SomDatasets.InsertNode(XmlNode n, String shortName) at iTextSharp.text.pdf.AcroFields.SetField(String name, String value, String display)在 iTextSharp.text.pdf.AcroFields.SetField(字符串名称,字符串值)
这是来自 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();
}