2013-10-31 23 views
10

Ich habe so viele verschiedene Möglichkeiten ausprobiert, aber ich kann das Kontrollkästchen nicht überprüft werden! Hier ist, was ich versucht habe:Checking off pdf checkbox mit itextsharp

var reader = new iTextSharp.text.pdf.PdfReader(originalFormLocation); 
using (var stamper = new iTextSharp.text.pdf.PdfStamper(reader,ms)) { 
    var formFields = stamper.AcroFields; 
    formFields.SetField("IsNo", "1"); 
    formFields.SetField("IsNo", "true"); 
    formFields.SetField("IsNo", "On"); 
} 

Keine von ihnen funktionieren. Irgendwelche Ideen?

+0

Sind Sie sicher, dass das Kontrollkästchen Feld wirklich „ISNO“ genannt wird? – ovaltein

Antwort

12

Sie sollten nicht für die möglichen Werte "raten". Sie müssen einen Wert verwenden, der in der PDF gespeichert ist. Versuchen Sie, die CheckBoxValues Beispiel diese möglichen Werte zu finden:

public String getCheckboxValue(String src, String name) throws IOException { 
    PdfReader reader = new PdfReader(SRC); 
    AcroFields fields = reader.getAcroFields(); 
    // CP_1 is the name of a check box field 
    String[] values = fields.getAppearanceStates("IsNo"); 
    StringBuffer sb = new StringBuffer(); 
    for (String value : values) { 
     sb.append(value); 
     sb.append('\n'); 
    } 
    return sb.toString(); 
} 

Oder einen Blick auf die PDF nehmen RUPS verwenden. Gehe zur Widget Annotation und suche nach dem normalen (/N) Aussehen (AP). In meinem Beispiel sind sie /Off und /Yes:

screen shot

+0

Was bedeutet dieses AP-Array genau? Der 1. Wert wird immer für den Zustand "uncheck" und der 2. Wert für "check" verwendet. Momentan verlasse ich mich auf diese Annahme und es funktioniert sogar für ungerade PDFs, aber ich möchte sicher sein ... –

+0

Der 'Aus' Wert sollte immer den * Aus-Zustand * wiedergeben. Die Reihenfolge spielt keine Rolle. Sie sollten also nicht davon ausgehen, dass der erste Zustand der Status "nicht prüfen" ist. –

Verwandte Themen