ItextSharp - 使用C#自动填写pdf表单 - 复选框问题

Bra*_*nes 9 c# pdf itextsharp

我正在填写使用Acrobat pro和iTextSharp&C#创建的pdf表单,并且在尝试勾选复选框字段时发现自己卡住了.

我有它的单选按钮和文本框,但似乎无法使复选框工作.我还确认了这个案例中的复选框名称"Q7b"在acrobat文档中是正确的,可以使用下面的代码在表单上找到它

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

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

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

}
Run Code Online (Sandbox Code Playgroud)

我用来更新复选框的代码如下

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();
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

布拉德

Aar*_*ner 16

将字段值设置为复选框的导出值将导致检查它.因此,如果导出值为"是",则将字段值设置为"是"将勾选复选框.如果导出值是其他值(例如"On"),则需要将字段值设置为该值以便勾选该框.


Mar*_*rer 3

复选框值通常为“开”和“关”。单选按钮组可以使用他们想要的任何值(加上“Off”)。