簡體   English   中英

iTextSharp-填充動態表格字段

[英]iTextSharp - Populating a dynamic table field

我有一個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();

編輯:

從@Bruno Lowagie的答案來看,我恐怕沒有使用正確的措詞。 我有一個LiveCycle Designer文件(XDP),並將其另存為動態PDF表單文件(PDF)。 這來自SAP應用程序。 上面的代碼對我來說效果很好,因此我理解它實際上是靜態PDF表單。

然后,表字段稱為“ FIELD”-我將需要一種填充行的方法。

很抱歉造成您的困惑,感謝您的幫助。

特別感謝@Bruno Lowagie向我指出正確的方向。

現在,我將重現解決方案。

我首先使用帶有XFA表單的XDP文件(Adobe LiveCycle文件)。 然后,我將其保存為PDF文件,並使用Acrobat Pro填寫了表單,最后將表單數據導出到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語句中。)

您正在混合兩種不同的技術。

您所引用的文章填寫了靜態表格。 即:要么PDF要么只包含AcroForm字段,要么包含由基於AcroForm技術 以及基於XML Forms Architecture (XFA)的表單定義組成的混合表單。

您正在談論動態表單,這意味着您正在談論純XFA。 您需要一個完全不同的示例: Java / C#

使用fillXfaForm()方法填寫表單后,您可以使用封閉源XFA Worker展平表單。 另請參見下載頁面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM