2011-01-07 29 views
9

iTextSharp & C# ile Acrobat pro kullanılarak oluşturulmuş bir pdf formunu doldurma sürecindeyim ve bir onay kutusu alanını işaretlemeye çalışırken kendimi sıkışmış buldum.ItextSharp - C# kullanarak pdf formunu doldurun - Checkbox'larla İlgili Sorunlar

Radyo düğmeleri ve metin kutuları için çalışıyorum ancak onay kutusunun çalışmasını sağlayamıyor gibi görünüyor. Ben de bu durumda "Q7b" onay kutusu ismini doğruladı akrobat belgesinde doğrudur ve ben onay kutusunu güncelleştirmek için kullanıyorum kod

altındadır aşağıdaki 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(); 

} 

kullanarak form üzerinde bulabilirsiniz

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

Herhangi bir yardım çok takdir edilecektir.

Brad

cevap

2

Onay Kutusu değerleri genellikle "Kapalı" "Açık" ve bulunmaktadır. Radyo grupları istedikleri değerleri kullanabilirler (artı "Kapalı").

+0

Yardımlarınız için teşekkürler Mark. Bir ara verdikten ve pdf belgesine daha yakından baktığımda onay kutusunun dışa aktarma değeri özelliğini tuhaf bir değere sahip buldum. Bunu Açık olarak ayarlama ve eşleşecek kodu değiştirerek sorun alanlarını çözdü.Çekil ("Q7b", "Açık"); –

+0

Dikkat et ... formun normal olarak sunulduğu her yerde "tuhaf değer" gerekli olabilir. Eğer onu sadece içeride kullanıyorsan, iyi. Ancak, orijinal gönderim hedefine geri dönmeye çalışırsanız, o alan değerini tekrar çevirmeniz gerekir. Geri almak ve kodunuzdaki garip değeri kullanmak daha kolay. –

+0

Uyarı için teşekkürler. Bu, içsel bir şeydir, bu yüzden değerin değişme etkisi olmayacaktır. –

4

Ayrıca onay kutusunu On ve Off olarak denedim ve çalışmadı. Sonra Adobe LiveCycle Designer'da açtım. Onay kutusu değerleme özelliği, Değer Değeri özelliklerinde değiştirildi. Onları Evet ve Hayır olarak ayarlayın. Şimdi benim için çalışıyor.

2

Onay kutuları için "1" değerini değer olarak girmeniz gerekir.

deneyin

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

aşağıdaki onu kontrol edilmesine neden olacaktır onay kutusu ihracat değeri için alan değeri ayarlanıyor. Bu nedenle, dışa aktarma değeri "Evet" ise, alanın değerini "Evet" olarak ayarlamak onay kutusunu işaretleyecektir. Dışa aktarma değeri başka bir şeyse (ör. "Açık"), kutuyu işaretlemek için alan değerini bu değere ayarlamanız gerekir.

0

fields.SetField ("your_field", "On"); Varsayılan olarak benim için çalışır.

+1

, aaron'un bu cevabın daha doğru bir sürümünü sağladığına benziyor. –

İlgili konular