1

我用 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 给了我这个错误:

字典中不存在给定的键

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

4

1 回答 1

1

请参阅几年前的此线程,该线程讨论了将 PDF 字段与 Designer/LiveCycle 创建的任何看起来像表单字段的内容混合。

基本上 iText(因此 iTextSharp)仅支持SetField使用 LiveCycle 创建的字段。

也就是说,解决方法是使用字段的键名而不是其名称。您可以通过foreachpdfFormFields.Fields属性执行 a 来找到键名。你最终会得到类似topmostSubform[0].Page1[0].DropDownList1[0].

一旦你得到了,你就可以这样做:

pdfFormFields.SetListOption("topmostSubform[0].Page1[0].DropDownList1[0]", new string[] { "English", "German", "French", "Spanish", "Dutch" }, new string[] { "EN", "DE", "FR", "ES", "NL" });

很重要!!您在此处设置的值适用于 Adob​​e Reader/Acrobat,但会被 LiveCycle 忽略。如果您在 LiveCycle 中制作 PDF,但没有理由再次打开它,那么您就可以找到了。如果您完全依赖 XFA,它也可能会崩溃。

于 2011-08-02T18:20:59.983 回答