使用 iTextSharp 進行 PDF 套版時,發現 CheckBox 的勾選樣式怎麼從 打勾
變成 打叉
,一開始以為是範本檔設錯,確認後是 iTextSharp 版本的問題。
範本
程式產生的PDF
Google 後發現問題出在 iTextSharp 的版本上面,由於新專案安裝的版本是 5.5.12,
此版本的 SetField
方法,相對舊版本新增了一個 saveAppearance
參數(是否保存當前 PDF 的外觀顯示),如果未設定此參數,則會造成 CheckBox
和 RadioButton
的勾選樣式會和範本設定的不同。
public virtual bool SetField(string name, string value, bool saveAppearance);
將 CheckBox
和 RadioButton
用到 SetField
的地方都加上第三個參數,並且設為 true
。
fields.SetField(item.Key, item.Value, true);
結果
測試其他版本,
5.5.4 以前的版本都正常,
5.5.5 開始出現此問題,但此版本沒有 saveAppearance
參數可以解決此問題,
5.5.7 之後才有 saveAppearance
參數,
所以除了 5.5.5
和 5.5.6
之外的版本都可以使用此方法解決此問題。
參考文章:
iTextSharp 5.5.6.0 Bug? check box tick mark changes
使用iTextSharp進行PDF檔案套版