![summary-icon](https://cdn-vip.kingdee.com/statics/webfront/summary_icon.png)
金蝶PLM签名采用文本换图或文本换日期,因左下对齐需偏移调整位置,效果欠佳。多个签名样式在同一图幅配置复杂。理想效果为签名图与文本中心对齐,大小由文本高度控制。采用iTextSharp库实现时,需计算图片实际宽度并调整,可通过高度比和缩放适配实现。签日期文本可用中心对齐和宽度调整优化。
金蝶PLM签名采用了文本换图片或文本换文本(签日期),由于对齐方式使用了左下坐标对齐,需要通过纵横偏移来调整位置,导致签名效果不尽如人意。
同时纵横及比例配置与图幅相关,要是同一个图幅有多个样式签名表格,这种配置方式会有问题。
(下面签名图片中多余的两条黑线为原始签名标签文本实际大小)
签名标签居中对齐,未设置偏移效果
签名标签居左对齐,未设置偏移效果
签名标签居左对齐,并设置偏移值效果,偏移值多次尝试才能得到理想效果,居左时偏移后反白区域仍破坏了表格线条
理想的签名效果应该让签名图片与文本中心对齐,签名图片大小由签名文本高度控制,必要时可以在这个基础上添加一个缩放比例,实测1:1效果就很不错。
签名的文本需要添加宽度因子,CAD图中文本很少用宽度为1的字体,否则看上去非常突兀
找到问题,下面给出解决方案,要实现中心对齐,需要计算出替换图片的实际宽度,然后将图片向左移动(图片宽度-标签宽度)/2即可。由于程序使用了iTextSharp开源库,要计算PDF中图片实际宽度有一定困难,下面给出一种简单计算方法,我们通过签名文本高度来转换,先将图片高度调整到与签名文本高度一致(经过测试iTextSharp能准确获取文本高宽值),然后通过签名图片原始长宽比就能计算出插入到PDF中图片实际宽度。
通过对签名后PDF进行分析,发现生成的签名图片高度与标签文本高度有一定差异。经过研究发现iTextSharp有提供一个ScaleToFit方法,通过该方法能快速指定插入后图片的高宽值。
对于签日期的文本比较好处理,iTextSharp开放的ShowTextAligned方法提供了中心对齐的创建方式,只需要计算出签名文本的中心位置即可。SetHorizontalScaling方法可以设置字体宽度。签名后效果见倒数第二张图。