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

时间:2011-01-07 07:13:12

标签: c# pdf itextsharp

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

我让它适用于单选按钮和文本框,但似乎无法使复选框工作。 我还确认了复选框名称,在这种情况下,“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();

}

我用来更新复选框的代码在

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

非常感谢任何帮助。

布拉德

6 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:4)

我也尝试使用On和Off复选框,但它不起作用。然后我在Adobe LiveCycle Designer中打开了。在复选框绑定属性Changed On Value Of Value属性中。将它们设置为是和否。现在它正在为我工​​作。

答案 2 :(得分:2)

复选框值通常为“开”和“关”。无线电组可以使用他们想要的任何值(加“关”)。

答案 3 :(得分:2)

对于复选框,您需要将“1”作为值传递。

尝试以下

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

答案 4 :(得分:0)

fields.SetField(" your_field"," On"); 默认为我工作。

答案 5 :(得分:0)

不确定是库还是我的PDF模板是如何创建的,但是我尝试了是/否,开/关,是/否...这些选项都不起作用。不过使用“ 1”和“ 0”还是可以的。

我建议您尝试使用这4个选项,直到找到适合您的值为止。