ItextSharp - AutoFill a pdf form using C# - Issues with Checkboxes

你离开我真会死。 提交于 2019-12-05 21:21:50

问题


I am in the process of filling in a pdf form created using Acrobat pro with iTextSharp & C#, and have found myself stuck when attempting to tick a checkbox field.

I have it working for radio buttons and textboxes but cannot seem to get the checkbox working. I have also confirmed the checkbox name in this case "Q7b" is correct in the acrobat document and can find it on the form using the following code

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

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

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

}

The code I am using to update the checkbox is below

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

Any help would be greatly appreciated.

Brad


回答1:


Setting the field value to the export value of the checkbox will cause it to be checked. So if the export value is "Yes", then setting the value of the field to "Yes" will tick the checkbox. If the export value is something else (e.g. "On"), you will need to set the field value to that in order to tick the box.




回答2:


I also tried On and Off for checkbox and it did not work. Then I opened in Adobe LiveCycle Designer. In the checkbox binding property Changed On Value Of Value properties. Set them To Yes and NO. Now it is working for me.




回答3:


Checkbox values are usually "On" and "Off". Radio groups can use whatever values they wish (plus "Off").




回答4:


For checkboxes you need to pass "1" as value.

Try following

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



回答5:


fields.SetField("your_field", "On"); On works for me by default.




回答6:


Not sure if it's the library or how my PDF template was created, but I tried yes/no, on/off, true/false ... none of those options worked. Using "1" and "0" worked though.

I'd suggest experimenting with these 4 options until you find the values that work for you.



来源:https://stackoverflow.com/questions/4623297/itextsharp-autofill-a-pdf-form-using-c-sharp-issues-with-checkboxes

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!