2016-05-24 9 views
2

Ich versuche, Optionen zu einem List-Feld innerhalb eines PDF-Formulars über C# und die itextsharp-Bibliothek hinzuzufügen. Aber ich kann keinen Weg finden, dies zu tun. Das Formular existiert bereits, ich habe es mit Acrobat erstellt. Ich möchte, dass die Listfield-Auswahlmöglichkeiten aus der PDF-Datei dieselben sind wie in meinem Programm. Daher möchte ich die Optionen in den Listenfeldern über iutxtsharp erstellen, um die Wartung zu reduzieren. Aber ich kann nicht finden, um dies zu tun. Mit dem PDFstamper aus der Bibliothek kann ich die Felder aus dem Formular ausfüllen. Und färbe einige Felder ein. Gibt es eine Möglichkeit, über C# -Code Optionen zu einem List-Feld hinzuzufügen? Wäre toll wenn jemand die Antwort kennt und mir einen Weg zeigt dies zu realisieren.Hinzufügen von listchoices zu Pdfform mit C# code

Antwort

0

Wenn Sie iText 7 verwenden, ist es einfach. Das wird erklärt in Kapitel 5 des iText 7 jump-start tutorial: Manipulating an existing PDF document

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); 

iText 7 zur Zeit existiert nur für Java; Die C# Version wird in 2 Wochen veröffentlicht.

Wenn Sie mit iText 5, dann müssen Sie Chapter 8 of iText in Action - Second Edition, genauer gesagt am ChoiceFields Beispiel konsultieren:

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"); 

Der obige Code ist Java-Code, aber man könnte es auch als „Pseudo-Code“ interpretieren wenn du Java nicht lesen willst.

Alle Beispiele aus dem iText in Action Book werden in C# konvertiert. Das vollständige iText 5-Beispiel finden Sie unter ChoiceFields.cs.

Wichtig: Ich nehme an, dass Sie das Formular mit Acrobat erstellt haben und dass Ihr Formular auf AcroForm-Technologie basiert. Wenn Sie Ihr Formular mit LiveCycle erstellt haben, haben Sie ein XFA-Formular. Der Code, der in dieser Antwort verwendet wird, funktioniert nicht für XFA-Formulare.

+0

Danke, dass mir sehr geholfen hat – Lukas