问题
使用 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档案套版