使用ITextSharp填充PDF格式的下拉列表

时间:2011-08-02 14:47:45

标签: pdf itextsharp livecycle

我创建了一个带有livecycle的pdf表单。一个静态的pdf。 现在我想填写这个pdf的一些字段。 我没有文本框的问题,但我的下拉列表有问题。 它是空的,我想填充它。

PdfReader pdfReader = new PdfReader(pdfTemplate);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create));
AcroFields pdfFormFields = pdfStamper.AcroFields;

pdfFormFields.SetField("Dep", "44");
pdfFormFields.SetField("grp", "0");
pdfFormFields.SetListOption("gardien", new string[] { "English", "German", "French", "Spanish", "Dutch" }, new string[] { "EN", "DE", "FR", "ES", "NL" });

前两个SetField没有问题,它有效。但是SetListOption给了我这个错误:

字典中没有给定的密钥

你能帮助我吗,我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

请参阅this thread from a couple of years ago,其中讨论了将PDF字段与任何Designer / LiveCycle混合创建看起来像表单字段的内容。

基本上iText(以及iTextSharp)仅支持使用LiveCycle创建的字段{。{1}}。

也就是说,解决方法是使用字段的键名而不是名称。您可以在SetField属性上执行foreach来找到密钥名称。你最终会得到类似pdfFormFields.Fields的内容。

一旦你有了这个,你就可以做到:

topmostSubform[0].Page1[0].DropDownList1[0]

非常重要!! 您在此处设置的值可以使用Adobe Reader / Acrobat,但LiveCycle会忽略这些值。如果您从LiveCycle中制作PDF,但没有理由再次使用它,那么您就会找到它。如果您完全依赖XFA,它也可能会破坏。