我有一个带有动态字段的XDP和一个动态PDF文件。
我能够填写文本字段和类似的(如下面的代码所示)。
问题是我有一个动态表字段,我不知道如何填充它。我找到了许多很好的教程来“从头开始”创建一个表,但是这里的表是一个已经预先定义的字段(宽度、列数等等)。
如何填充动态表字段?任何帮助都将不胜感激。
PS -下面是我用于填充文本字段和类似的代码,基于本文:http://bit.ly/12Xu1QY
string template = "template.pdf";
string new = "new.pdf";
var reader = new PdfReader(template);
var stamper = new PdfStamper(reader, new FileStream(file, FileMode.Create));
AcroFields fields = stamper.AcroFields;
fields.SetField("FIELD_NAME_1", "VALUE1");
fields.SetField("FIELD_NAME_2", "VALUE2");
stamper.Close();编辑:
从布鲁诺·洛瓦吉的回答来看,我恐怕没有使用正确的措辞。我有一个LiveCycle设计器文件(XDP),我将它保存为一个动态PDF (PDF)。这来自SAP应用程序。上面的代码对我来说很好,所以我理解它实际上是一个静态PDF表单。
然后,表字段被称为“字段”--我需要一种填充行的方法。
很抱歉给你带来了混乱,我很感激你的帮助。
发布于 2013-05-31 23:14:08
特别感谢@Bruno为我指明了正确的方向。
现在我将复制解决方案。
我开始使用XFA的XDP文件(Adobe文件)。然后我将其保存到一个PDF文件中,并使用Acrobat填写表单,最后将表单数据导出到一个XML文件中。
这最终是我给PdfStamper提供的XML文件,以便填充该PDF文件。
因此,首先,我以这样的方式动态生成XML:
var doc = new XDocument(new XDeclaration("1.0", "UTF-8", ""),
new XElement("CUSTOMER",
new XElement("FIRST_NAME", FirstNameTextBox.Text),
new XElement("LAST_NAME", LastNameTextBox.Text)
));然后我用这样的方式把它喂给了PdfStamper:
var reader = new PdfReader(templateFilename);
var stamper = new PdfStamper(reader, new FileStream(bolFilename, FileMode.Create));
var xml = GenerateXml(); // Above code
var stream = new MemoryStream(UTF8Encoding.Default.GetBytes(xml ?? String.Empty));
stamper.AcroFields.Xfa.FillXfaForm(stream);
stamper.Close();(不要忘记将代码放在using语句中。)
发布于 2013-05-23 08:22:26
你把两种不同的技术混为一谈。
您所指的这篇文章填写了一个静态表单。也就是说:一个只包含AcroForm字段的PDF格式,或者一个混合表单,包括基于AcroForm技术的表单定义以及基于XML Forms Architecture (XFA)的定义。
你说的是一种动态形式,这意味着你在谈论纯XFA。您需要一个完全不同的例子:Java / C#
使用fillXfaForm()方法填写表单后,可以使用封闭源XFA工人将表单扁平化。也见下载页面。
https://stackoverflow.com/questions/16704091
复制相似问题