2011-01-07 80 views
9

我正在填写使用Acrobat Pro与iTextSharp & C#创建的PDF表单,并发现自己卡住时,试图勾选复选框字段。ItextSharp - 自动填充使用C#的pdf表格 - 问题与复选框

我已经为单选按钮和文本框工作,但似乎无法使复选框工作。 我已经在这种情况下“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

感谢您的帮助马克。在休息一下并仔细查看pdf文档后,我发现复选框的Export value属性有一个奇怪的值。将其设置为On并更改代码以匹配已解决问题fields.SetField(“Q7b”,“On”); – 2011-01-08 00:34:10

+0

小心......无论通常提交表格是否需要“奇怪的价值”。如果你只是在内部使用它,没问题。但是,如果您尝试返回原始提交目标,则需要将该字段值再次转换回来。更容易恢复它并在你的代码中使用奇怪的值。 – 2011-01-08 01:07:39

4

我也尝试打开和关闭复选框,它没有工作。然后我在Adobe LiveCycle Designer中打开。在复选框绑定属性中改变了Value的Value属性。将它们设置为是和否。现在它为我工作。

2

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

尝试以下

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

设置字段值复选框的出口值将导致它进行检查。因此,如果导出值为“是”,那么将该字段的值设置为“是”将勾选复选框。如果输出值是其他值(例如“On”),则需要将字段值设置为该值以打勾框。

0

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