Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# iTextSharp-填充动态表字段_C#_Itextsharp - Fatal编程技术网

C# iTextSharp-填充动态表字段

C# iTextSharp-填充动态表字段,c#,itextsharp,C#,Itextsharp,我有一个XDP和一个带有动态字段的动态PDF文件 我能够填写文本字段等(如下面的代码所示) 问题是我有一个动态表字段,我不知道如何填充它。我找到了很多很好的教程,可以“从头开始”创建一个表,但这里的表是一个已经预定义的字段(宽度、列数等) 如何填充动态表字段?任何帮助都将不胜感激 PS-以下是我根据本文用于填充文本字段和类似内容的代码: 编辑: 从@Bruno Lowagie的回答来看,恐怕我没有使用正确的措辞。我有一个LiveCycle设计器文件(XDP),并将其保存为动态PDF表单文件(PD

我有一个XDP和一个带有动态字段的动态PDF文件

我能够填写文本字段等(如下面的代码所示)

问题是我有一个动态表字段,我不知道如何填充它。我找到了很多很好的教程,可以“从头开始”创建一个表,但这里的表是一个已经预定义的字段(宽度、列数等)

如何填充动态表字段?任何帮助都将不胜感激

PS-以下是我根据本文用于填充文本字段和类似内容的代码:

编辑:

从@Bruno Lowagie的回答来看,恐怕我没有使用正确的措辞。我有一个LiveCycle设计器文件(XDP),并将其保存为动态PDF表单文件(PDF)。这来自一个SAP应用程序。上面的代码对我来说很好,所以我理解它实际上是一个静态PDF表单

然后,表字段被称为“字段”-我需要一种填充行的方法


很抱歉给您带来困惑,并感谢您的帮助。

您将两种不同的技术混为一谈

您所指的文章填写了一个静态表单。也就是说:要么是只包含AcroForm字段的PDF,要么是由基于AcroForm技术以及基于XML表单体系结构(XFA)的表单定义组成的混合表单

您所说的是动态表单,这意味着您所说的是纯XFA。您需要一个完全不同的示例:/


使用
fillXfaForm()
方法填写表单后,可以使用封闭源代码展平表单。另请参见。

您正在混合两种不同的技术

您所指的文章填写了一个静态表单。也就是说:要么是只包含AcroForm字段的PDF,要么是由基于AcroForm技术以及基于XML表单体系结构(XFA)的表单定义组成的混合表单

您所说的是动态表单,这意味着您所说的是纯XFA。您需要一个完全不同的示例:/


使用
fillXfaForm()
方法填写表单后,可以使用封闭源代码展平表单。另请参阅。

特别感谢@Bruno Lowagie为我指明了正确的方向

现在我将复制解决方案

我从一个带有XFA表单的XDP文件(AdobeLiveCycle文件)开始。然后我将其保存到PDF文件中,并使用AcrobatPro填写表单,最后将表单数据导出到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)
));
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();
然后我用这种方式将它输入到
PdfStamper

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)
));
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语句中。)

特别感谢@Bruno Lowagie为我指明了正确的方向

现在我将复制解决方案

我从一个带有XFA表单的XDP文件(AdobeLiveCycle文件)开始。然后我将其保存到PDF文件中,并使用AcrobatPro填写表单,最后将表单数据导出到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)
));
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();
然后我用这种方式将它输入到
PdfStamper

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)
));
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语句中。)

谢谢!我对我的问题进行了编辑,以进一步阐述。我一定会查看链接。非常感谢。我还是不明白这个问题。静态PDF表单中没有“表字段”这样的东西。在动态PDF表单中,可以有重复的子表单,这意味着您可以根据数据重复一行,但静态表单是。。。静止的在静态表单中,无法定义根据要填写的记录数自动增长的表。谢谢!我对我的问题进行了编辑,以进一步阐述。我一定会查看链接。非常感谢。我还是不明白这个问题。静态PDF表单中没有“表字段”这样的东西。在动态PDF表单中,可以有重复的子表单,这意味着您可以根据数据重复一行,但静态表单是。。。静止的在静态表单中,不能定义根据要填写的记录数自动增长的表。