我想将我的JSON对象转换为XML,以便在FillXfaForm中使用iText填充我的pdf表单 .
public void PopulatePDF(String src, string jsonString, String dest)
{
PdfDocument pdf = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdf, true);
XfaForm xfa = form.GetXfaForm();
XmlDocument xmlDoc = (XmlDocument)JsonConvert.DeserializeXmlNode(jsonString, "root");
String xmlString = xmlDoc.OuterXml;
xfa.FillXfaForm(XmlReader.Create(new StringReader(xmlString)));
xfa.Write(pdf);
pdf.Close();
}
它给了我一个错误“类型'System.NullReferenceException的异常'发生在itext.forms.dll中但未在用户代码中处理” . 它在行xfa.FillXfaForm(XmlReader.Create(new StringReader(xmlString)))上给出了错误 .
JSON字符串如下:
{ "id": 278, "clientID": 0, "Number": null "Amount": 0.0 }
生成的XML字符串如下:
<root><id>278</id><clientID>0</clientID><Number /><Amount>0</Amount></root>
这是表单的链接:(它有一个名为id的字段)https://www.dropbox.com/s/3dkb4ry5gu8m74e/TestForm.pdf?dl=0
1 回答
PDF文档中的表单不是XFA表单 . 这是一个普通的AcroForm .
XfaForm#FillXfaForm
仅适用于XFA表单 .为了填充AcroForm中的普通字段,您必须知道其字段的名称 . 例如,在您附加的文档中,有一个名为
id
的字段 .此代码使用
278
值填充id
字段:当然,您必须自己处理解析XML / JSON .