【发布时间】:2019-05-11 08:23:34
【问题描述】:
我的 Pdf 包含一个带有空白字段的 XFA 表单。我尝试通过操作 XML 然后使用 ITextSharp 应用 SetXfa() 来填充它,但 PDF 没有改变。这是我的方法:
static void EditFieldXFA(string path, string key, string value)
{
iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(path);
using (MemoryStream ms = new MemoryStream())
{
PdfStamper stamper = new PdfStamper(reader, ms);
AcroFields form = stamper.AcroFields;
XfaForm xfa = form.Xfa;
var a = xfa.DatasetsNode.InnerXml;
if (a.Contains(key))
{
// The empty XML looks like <key />, and a filled XML looks like <key>value</key>, so we edit the field
string keyClose = key.Replace(" /", "").Replace("<", "</");
var newXml = a.Replace(key, key.Replace(" /", "") + value + keyClose);
XmlDocument doc = new XmlDocument();
doc.LoadXml(newXml);
// xfa.FillXfaForm(XmlReader.Create(new StringReader(newXml)));
xfa.DomDocument = doc;
xfa.Changed = true;
XfaForm.SetXfa(xfa, stamper.Reader, stamper.Writer);
stamper.Close();
reader.Close();
return;
}
else
{
Console.Write("Error : No " + key + " field detected. Please check that it is empty. Press enter to exit the process.");
Console.Read();
Environment.Exit(2);
}
}
}
XML 已正确修改,我检查了。 这是正确的方法吗?你知道接下来要尝试什么吗?感谢您的帮助!
XML 文件:https://drive.google.com/file/d/1EbZJM6TjZ5tXQ0Dxa6IeUDz3QgJuxsBi/view?usp=sharing 如果下载有任何问题,请告诉我,并在 Acrobat 中打开查看内容。
【问题讨论】:
-
您不必删除问题的former version 并重新创建它;这只会让你的问题更难找到。