首页 文章

将JSON转换为XML以传递给FillXfaForm

提问于
浏览
0

我想将我的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 回答

  • 1

    PDF文档中的表单不是XFA表单 . 这是一个普通的AcroForm . XfaForm#FillXfaForm 仅适用于XFA表单 .

    为了填充AcroForm中的普通字段,您必须知道其字段的名称 . 例如,在您附加的文档中,有一个名为 id 的字段 .

    此代码使用 278 值填充 id 字段:

    PdfAcroForm form = PdfAcroForm.GetAcroForm(pdf, true);
    form.GetField("id").SetValue("278");
    

    当然,您必须自己处理解析XML / JSON .

相关问题