使用c#代码将listchoices添加到Pdfform

使用c#代码将listchoices添加到Pdfform,c#,pdf,itextsharp,pdf-form,C#,Pdf,Itextsharp,Pdf Form,我试图通过C#和itextsharp库向pdf表单中的列表字段添加选项。但是我找不到一个方法来做这件事。 表单已经存在,我用Acrobat创建了它。我希望PDF中的列表字段选项与我的程序中的相同。 因此,我希望通过itextsharp在列表字段中创建选项,以减少维护。 但是我找不到时间去做这件事。使用库中的PDFstamper,我可以填写表单中的字段。给一些字段涂上颜色。 是否可以通过c代码向列表字段添加选项? 如果有人知道答案并告诉我实现这一点的方法,那就太好了 如果您使用的是iText 7,

我试图通过C#和itextsharp库向pdf表单中的列表字段添加选项。但是我找不到一个方法来做这件事。 表单已经存在,我用Acrobat创建了它。我希望PDF中的列表字段选项与我的程序中的相同。 因此,我希望通过itextsharp在列表字段中创建选项,以减少维护。 但是我找不到时间去做这件事。使用库中的PDFstamper,我可以填写表单中的字段。给一些字段涂上颜色。 是否可以通过c代码向列表字段添加选项?
如果有人知道答案并告诉我实现这一点的方法,那就太好了

如果您使用的是iText 7,这很简单。第5章对此进行了解释:

PdfAcroForm form=PdfAcroForm.getAcroForm(pdfDoc,true);
映射字段=form.getFormFields();
列表选项=新建ArrayList();
选项。添加(新PDF字符串(“任何”);
添加(新的PDF字符串(“上午8:30-下午12:30”);
添加(新的PDF字符串(“下午12:30-4:30”);
添加(新的PDF字符串(“下午4:30-8:30”);
添加(新的PdfString(“晚上8:30-上午12:30”);
添加(新的PdfString(“上午12:30-4.30”);
添加(新的PDF字符串(“上午4.30-8.30”);
PdfArray arr=新的PdfArray(选项);
fields.get(“shift”).setOptions(arr);
iText 7目前仅适用于Java;C#版本将在两周后发布

如果您使用的是iText 5,那么您需要咨询,更具体地说,在示例中:

AcroFields form=stamp.getAcroFields();
表格.设定域(“选择1”、“NL”);
form.setListSelection(“choice_2”,新字符串[]{“德语”、“西班牙语”});
String[]languages=form.getListOptionDisplay(“选项3”);
String[]exportvalues=form.getListOptionExport(“选项3”);
int n=语言长度;
字符串[]新语言=新字符串[n+2];
String[]new_exportvalues=新字符串[n+2];
对于(int i=0;i
上面的代码是Java代码,但如果您不想阅读Java,也可以将其解释为“伪代码”

iText in Action手册中的所有示例都转换为C#。有关完整的iText 5示例,请参阅


重要提示:我假设您已经使用Acrobat创建了表单,并且您的表单基于AcroForm技术。如果您已经使用LiveCycle创建了表单,那么您就有了一个XFA表单。此答案中共享的代码不适用于XFA表单。

感谢您对我的帮助
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
Map<String, PdfFormField> fields = form.getFormFields();
List<PdfString> options = new ArrayList<PdfString>();
options.add(new PdfString("Any"));
options.add(new PdfString("8.30 am - 12.30 pm"));
options.add(new PdfString("12.30 pm - 4.30 pm"));
options.add(new PdfString("4.30 pm - 8.30 pm"));
options.add(new PdfString("8.30 pm - 12.30 am"));
options.add(new PdfString("12.30 am - 4.30 am"));
options.add(new PdfString("4.30 am - 8.30 am"));
PdfArray arr = new PdfArray(options);
fields.get("shift").setOptions(arr);
AcroFields form = stamper.getAcroFields();
form.setField("choice_1", "NL");
form.setListSelection("choice_2", new String[]{"German", "Spanish"});
String[] languages = form.getListOptionDisplay("choice_3");
String[] exportvalues = form.getListOptionExport("choice_3");
int n = languages.length;
String[] new_languages = new String[n + 2];
String[] new_exportvalues = new String[n + 2];
for (int i = 0; i < n; i++) {
    new_languages[i] = languages[i];
    new_exportvalues[i] = exportvalues[i];
}
new_languages[n] = "Chinese";
new_exportvalues[n] = "CN";
new_languages[n + 1] = "Japanese";
new_exportvalues[n + 1] = "JP";
form.setListOption("choice_3", new_exportvalues, new_languages);
form.setField("choice_3", "CN");
form.setField("choice_4", "Japanese");