gpt4 book ai didi

itextsharp - 如何在 iTextSharp 中以静态 XFA 形式设置 XFA 数据并保存?

转载 作者:行者123 更新时间:2023-12-04 04:58:09 26 4
gpt4 key购买 nike

我在 iText/iTextSharp(iTextSharp 5.3.3 通过 NuGet)中遇到了一个非常奇怪的 XFA 表单问题。我正在尝试填写静态 XFA 样式的表单,但我的更改没有生效。

我有两个版本的 iText in Action,并且一直在查阅第二版以及书中的 iTextSharp 代码示例转换。

背景:我有一个 XFA 表单,可以在我的计算机上使用 Adob​​e Acrobat 手动填写。使用 iTextSharp 我可以读取 Xfa XML 数据是什么并查看数据的结构。我基本上是在尝试用 iText 来模仿它。

当我在 Acrobat 中添加数据并保存时,数据是什么样子的(注意:这只是数据集的特定部分)

enter image description here

这是我试图读入以替换现有数据的 XML 文件(注意:这是该文件的整个上下文):

enter image description here

但是,当我将路径传递到替换 XML 文件并尝试设置数据时,创建的新文件(替换了数据的原始文件的副本)没有抛出任何错误,但数据没有被更新。我可以看到新文件已创建,我可以打开它,但文件中没有数据。

这是第一次用于替换数据或填充的代码,它是 http://sourceforge.net/p/itextsharp/code/HEAD/tree/trunk/book/iTextExamplesWeb/iTextExamplesWeb/iTextInAction2Ed/Chapter08/XfaMovie.cs 的变体。

public void Generate(string sourceFilePath, string destinationtFilePath, string replacementXmlFilePath)
{
PdfReader pdfReader = new PdfReader(sourceFilePath);
using (MemoryStream ms = new MemoryStream())
{
using (PdfStamper stamper = new PdfStamper(pdfReader, ms))
{
XfaForm xfaForm = new XfaForm(pdfReader);
XmlDocument doc = new XmlDocument();
doc.Load(replacementXmlFilePath);
xfaForm.DomDocument = doc;
xfaForm.Changed = true;
XfaForm.SetXfa(xfaForm, stamper.Reader, stamper.Writer);
}

var bytes = ms.ToArray();
File.WriteAllBytes(destinationtFilePath, bytes);
}
}

非常感谢任何帮助。

最佳答案

我发现了问题。替换 DomDocument 需要是新文档的整个合并 XML,而不仅仅是数据或数据集部分。

关于itextsharp - 如何在 iTextSharp 中以静态 XFA 形式设置 XFA 数据并保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16502427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com