2011-01-07 111 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」); 默認爲我工作。