iT邦幫忙

0

[C#][iTextSharp] 5.5.X Bug? PDF 套版時 CheckBox, RadioButton 的樣式被改變

問題

使用 iTextSharp 進行 PDF 套版時,發現 CheckBox 的勾選樣式怎麼從 打勾 變成 打叉,一開始以為是範本檔設錯,確認後是 iTextSharp 版本的問題。

範本
https://ithelp.ithome.com.tw/upload/images/20171223/20106865EmjgbV1F9f.jpg

程式產生的PDF
https://ithelp.ithome.com.tw/upload/images/20171223/20106865OcosoDE6Lo.jpg

原因

Google 後發現問題出在 iTextSharp 的版本上面,由於新專案安裝的版本是 5.5.12,
此版本的 SetField 方法,相對舊版本新增了一個 saveAppearance 參數(是否保存當前 PDF 的外觀顯示),如果未設定此參數,則會造成 CheckBoxRadioButton 的勾選樣式會和範本設定的不同。

public virtual bool SetField(string name, string value, bool saveAppearance);

解決辦法

CheckBoxRadioButton 用到 SetField 的地方都加上第三個參數,並且設為 true

fields.SetField(item.Key, item.Value, true);

結果
https://ithelp.ithome.com.tw/upload/images/20171223/20106865n4OGQF6RME.jpg

結語

測試其他版本,
5.5.4 以前的版本都正常,
5.5.5 開始出現此問題,但此版本沒有 saveAppearance 參數可以解決此問題,
5.5.7 之後才有 saveAppearance 參數,
所以除了 5.5.55.5.6 之外的版本都可以使用此方法解決此問題。

參考文章:
iTextSharp 5.5.6.0 Bug? check box tick mark changes
使用iTextSharp進行PDF檔案套版


尚未有邦友留言

立即登入留言