2011-01-07 24 views
9

Jestem w trakcie wypełniania formularza PDF utworzonego za pomocą programu Acrobat pro z iTextSharp & C# i utknąłem podczas próby zaznaczenia pola wyboru.ItextSharp - Autouzupełnianie formularza PDF przy użyciu C# - Problemy z Checkboxes

Mam działa na przyciski radiowe i pola tekstowe, ale nie wydaje się, aby pole wyboru działało. I potwierdziły również nazwę pola wyboru w tym przypadku „Q7b” jest poprawne w dokumencie Acrobat i można go znaleźć na formularzu za pomocą następującego kodu

private string getfieldnames(AcroFields fields) 
{ 
    StringBuilder sb = new StringBuilder(); 

    foreach (string key in fields.Fields.Keys) 
    { 

     sb.Append(key + Environment.NewLine); 
    } 
    return sb.ToString(); 

} 

Kod używam zaktualizować pole jest poniżej

using (MemoryStream pdfFlat = new MemoryStream()) 
{ 

    PdfReader pdfReader = new PdfReader(strPath); 
    PdfStamper pdfStamp = new PdfStamper(pdfReader, pdfFlat); 
    AcroFields fields = pdfStamp.AcroFields; 

    //textfields 
    fields.SetField("Initiating_Doctor", "Doctor A"); 
    fields.SetField("Speciality", "Surgeon"); 

    //Radiobuttons 
    fields.SetField("PRELIM_Q1", "Yes"); 
    fields.SetField("PRELIM_Q2", "No"); 
    fields.SetField("PRELIM_Q3", "No"); 
    fields.SetField("PRELIM_Q4", "No"); 

    //checkbox - Set the checkbox to checked but this does not work. 
    fields.SetField("Q7b", "Yes"); 

    pdfReader.Close(); 
    pdfStamp.FormFlattening = true; 
    pdfStamp.FreeTextFlattening = true; 
    pdfStamp.Writer.CloseStream = false; 
    pdfStamp.Close(); 
} 

Każda pomoc zostanie bardzo doceniona.

Brad

Odpowiedz

2

Wartości w polu wyboru są zwykle "Włączone" i "Wyłączone". Grupy radiowe mogą korzystać z dowolnych wartości (plus "Off").

+0

Dzięki za pomoc Mark. Po zrobieniu przerwy i bliższym przyjrzeniu się dokumentowi pdf stwierdziłem, że właściwość Export value tego pola wyboru ma dziwną wartość. ustawienie tego na Włączone i zmiana kodu do dopasowania rozwiązała pola problemowe.SetField ("Q7b", "Włącz"); –

+0

Ostrożnie ... że "dziwna wartość" może być konieczna wszędzie tam, gdzie normalnie jest składana. Jeśli używasz go tylko wewnętrznie, dobrze. Ale jeśli kiedykolwiek spróbujesz powrócić do pierwotnego celu przesyłania, musisz ponownie przetłumaczyć tę wartość pola. Łatwiej go cofnąć i użyć dziwnej wartości w kodzie. –

+0

Dzięki za ostrzeżenie. Jest to rzecz wewnętrzna, więc ta wartość nie będzie miała wpływu na efekt. –

4

Próbowałem także włączać i wyłączać dla checkbox i to nie działało. Następnie otworzyłem w Adobe LiveCycle Designer. W polu właściwości zmiany właściwości pola wyboru Zmieniono wartość wartości. Ustaw je na Tak i NIE. Teraz działa dla mnie.

2

Dla pól wyboru należy podać wartość "1".

Spróbuj następujących

fields.SetField("PRELIM_Q1", "1"); 
15

Ustawienie wartości pola na wartość eksportu z wyboru spowoduje to być sprawdzone. Jeśli więc wartość eksportu wynosi "Tak", ustawienie wartości pola na "Tak" zaznacza pole wyboru. Jeśli wartość eksportu to coś innego (np. "Włącz"), musisz ustawić wartość pola na wartość, aby zaznaczyć pole.

0

fields.SetField ("twoje_ pole", "Włącz"); Domyślnie działa dla mnie.

+1

wygląda na to, że aaron już dostarczył dokładniejszą wersję tej odpowiedzi. –

Powiązane problemy