我创建了一个带有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给了我这个错误:
字典中没有给定的密钥
你能帮助我吗,我错过了什么吗?
答案 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,它也可能会破坏。