2011-01-07 8 views
9

मैं iTextSharp & सी # के साथ एक्रोबैट प्रो का उपयोग करके बनाए गए पीडीएफ फॉर्म को भरने की प्रक्रिया में हूं, और चेकबॉक्स फ़ील्ड को टिक करने का प्रयास करते समय खुद को अटक गया है।ItextSharp - C# का उपयोग करके एक पीडीएफ फॉर्म ऑटोफिल करें - चेकबॉक्स के साथ समस्या

मेरे पास यह रेडियो बटन और टेक्स्टबॉक्स के लिए काम कर रहा है लेकिन ऐसा लगता है कि चेकबॉक्स काम नहीं कर रहा है। मैं भी इस मामले "Q7b" में चेकबॉक्स नाम की पुष्टि की है कलाबाज दस्तावेज़ में सही है और निम्नलिखित कोड

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

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

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

} 

कोड मैं चेकबॉक्स अद्यतन करने के लिए उपयोग कर रहा हूँ

नीचे है का उपयोग करते हुए फार्म पर इसे पा सकते हैं
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(); 
} 

किसी भी मदद की सराहना की जाएगी।

ब्रैड

उत्तर

2

चेकबॉक्स मान आमतौर पर "चालू" और "बंद" होते हैं। रेडियो समूह जो भी मूल्य चाहते हैं (प्लस "ऑफ") का उपयोग कर सकते हैं।

+0

आपकी सहायता मार्क के लिए धन्यवाद। एक ब्रेक लेने और पीडीएफ दस्तावेज़ पर एक नजदीक देखने पर मुझे पता चला कि चेकबॉक्स की निर्यात मूल्य संपत्ति एक अजीब मूल्य था। इसे चालू करने और मिलान करने के लिए कोड को बदलने से समस्या फ़ील्ड को हल किया गया है। सैटफ़िल्ड ("Q7b", "चालू"); –

+0

सावधान ... जहां भी आम तौर पर फ़ॉर्म सबमिट किया जाता है, वहां "अजीब मूल्य" आवश्यक हो सकता है। यदि आप कभी भी इसे आंतरिक रूप से उपयोग कर रहे हैं, ठीक है। लेकिन यदि आप कभी भी मूल सबमिट लक्ष्य पर वापस जाने का प्रयास करते हैं, तो आपको उस फ़ील्ड मान को दोबारा अनुवाद करना होगा। इसे वापस करने और अपने कोड में अजीब मूल्य का उपयोग करने के लिए आसान है। चेतावनी के लिए –

+0

धन्यवाद। यह एक आंतरिक चीज है इसलिए मूल्य को बदलने से प्रभाव पर कोई प्रवाह नहीं होगा। –

4

मैंने चेकबॉक्स के लिए चालू और बंद भी किया और यह काम नहीं किया। फिर मैंने एडोब लाइवसाइकल डिजाइनर में खोला। चेकबॉक्स बाध्यकारी संपत्ति में मूल्य गुणों के मूल्य पर बदल गया। उन्हें हाँ और नहीं सेट करें। अब यह मेरे लिए काम कर रहा है।

2

चेकबॉक्स के लिए आपको "1" को मूल्य के रूप में पास करने की आवश्यकता है।

निम्नलिखित

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

चेकबॉक्स का निर्यात मूल्य को फ़ील्ड मान सेट करना यह जांच की जानी कारण होगा की कोशिश करें। इसलिए यदि निर्यात मान "हां" है, तो फ़ील्ड का मान "हां" में सेट करना चेकबॉक्स पर टिकेगा। यदि निर्यात मूल्य कुछ और है (उदा। "चालू"), तो बॉक्स को चेक करने के लिए आपको फ़ील्ड मान सेट करना होगा।

0

फ़ील्ड। सैटफ़िल्ड ("your_field", "चालू"); डिफ़ॉल्ट रूप से मेरे लिए काम करता है।

+1

ऐसा लगता है कि हारून ने पहले से ही इस उत्तर का एक और सटीक संस्करण प्रदान किया है। –