我正在使用 iTextSharp 使用以下代码用 XML 数据填充带有 XFA 表单的 PDF。如果我将字节写入 PDF 文件,我可以打开它并看到 XML 属性中的字符,例如&
显示为&
.
public static byte[] FillDynamicPdf(XElement templateXml, PdfReader reader)
{
using (var pdfStream = new MemoryStream())
using (var xmlStream = new MemoryStream())
{
templateXml.Save(xmlStream);
xmlStream.Position = 0;
using (var stamper = new PdfStamper(reader, pdfStream))
{
stamper.AcroFields.Xfa.FillXfaForm(xmlStream);
}
return pdfStream.ToArray();
}
}
但是,当我在生成的字节数组上使用 XFAFlatener(带有付费许可证)时&
,最终 PDF 中会显示。我已经搜索了很多,似乎找不到其他人发布相同的问题或任何好的 API 文档。有人有同样的问题吗?好像应该很常见吧。
这是我们扁平化过程的代码片段 - 可能是一些语法错误,因为我必须从我们的代码中复制并粘贴相关行以使其很好地适应这个问题区域。
byte[] pdfStream = getFormFilledPDFBytes();
var outputStream = new MemoryStream();
var document = new Document();
var writer = PdfWriter.GetInstance(document, outputStream);
var reader = new PdfReader(pdfStream);
var xfaf = new XFAFlattener(document, writer);
xfaf.Flatten(reader);
var flatPdf = outputStream.ToArray();