[C#][iTextSharp] 5.5.X Bug? PDF 套版时 CheckBox, RadioButton 的样

问题

使用 iTextSharp 进行 PDF 套版时,发现 CheckBox 的勾选样式怎么从 打勾 变成 打叉,一开始以为是範本档设错,确认后是 iTextSharp 版本的问题。

範本
http://img2.58codes.com/2024/20106865EmjgbV1F9f.jpg

程式产生的PDF
http://img2.58codes.com/2024/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);

结果
http://img2.58codes.com/2024/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档案套版


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章