web套打中内容偏移的成因及一点小小的解决方法

以下摘自某个打印论坛,网友出现了因连续打印出现套打偏移的问题后,与专业技术人员的对话:

 

网友问:“打印的时候第一张单据的打印位置是准确的,到第十张以后的位置就不正确了。这是怎么回事,能不能详细说明一下?”

 

专家答:“有时按测量的纸张尺寸精确设置报表的纸张页面大小后,用打印机进行实际输出多页时会发生位置偏移,一般都是因为打印机走纸不准造成的。要修正这样的走纸误差,可以一次性连续多打印几页(如3-5页),量出最后一页的位置误差值,据此求出每页的平均误差,然后根据这个平均误差值调整报表中的页面高度值。 ”

 

网友再问:“好的,谢谢了。但是现在有一个问题是,我如果将页面的高度设置为7.6149cm时在打印的时候就会出现上偏移的情况。将页面设置为7.6150的时候打印就出现下偏移情况。在7.6149和7.6150之间不能再增加一位小数了,不知道在这种情况下是怎么解决的。”

 

专家:(雷翻!无语)

 

上面网友的问题,看似无厘头,但如果你是套打软件的设计者,或者是套打软件的使用者,遇到这种套打偏移的问题,应该说,还是不少的。如果连续按固定高度打印50张,有可能会出现向下或向上偏移,如下图所示:

 



 

偏移的原因是什么一种原因,正如上面专家分析的那样,是打印纸张高度设置得不对,只要根据误差,调整纸张高度就行了。另一种原因,是打印机走纸不够精准,少打几页还看不出有啥问题,但连续打印后,因为误差累积起来,打印到10几张时,就很明显了,如果打印到100多张,上千张,呵,必须之毫里,差之千里了

 

打印机走纸不准,原因是啥呢?要不就是打印机质量不过关,要不就是打印机老化引起针孔传动机构精度下降,还有啥?我不是打印机的硬件专家,我只知道这些。

 

碰到这种纸张调高一点,向下偏,调矮一点向上偏,因为纸张设置精度有限以致无法再取一个中间高度的情况,我们做程序的,也只能建议用户,换一台精度高一点的打印机,或者建议一次不要打印太多。

 

有没有更好的办法,在走纸不那么精准的打印机上,来解决套打偏移的问题呢?我提一个想法,希望对各位做套打程序的朋友们一点启发:就是在一个打印任务中,当打印完几张正常高度的票据后,打印一张用来纠偏的、特别高度的票据(以下称之为校正页),这样可以降低对打印机走纸精度的要求,也达到了纠偏的目的,此方法可图标如下:

 



 

 

以网上流行的JatoolsPrinter web打印控件为例,它已经引入了这个方法,而且被证明非常有效。下面我简单说说,jatoolsPrinter如何实现这个连续套打的纠偏功能:

1. 先测量出,票据的实际高度,比如120mm()*100mm();

2. 按所得票据大小,设置自定义纸张,jatoolsPrinter可以自动创建自定义纸张类型,不必手动在控制面板/打印机、传真机中设置纸张类型。

3. 按所设纸张,试着连续打印票据,尽量多些,比如50张,假设测得最后一张向下偏移10cm

在打印控件里,加入如下纠偏代码:
settings:{paperWidth:1200,       // 1/10mm为单位,下同
       paperHeight:1000,
       normalOffset:{
                  offsetPages:50,
                  offset:120,
                  normalPages:5
                  }
}

 

以上代码告诉控件,这个打印机,每打印50张票据会产生10mm的向下偏移,请在每打印5张票据后,打印一张校正页,本例中,控件将以98.8 (mm)的纸张高度打印该票据。因为,是向下偏移,所以要插入一个高度略小于正常纸张的校正页。

 

每个校正页的高度计算公式如下:

paperHeight  (normalPages * offset / offsetPages )

= 100.0mm- 5 * 12.0mm/ 50 = 98.8mm

 

 

如果你正在开发web 应用,想解决连续套打偏移的问题或需要更灵活地控制打印机,jatoolsPrinter会是一个比较好的选择。如果你有兴趣自已实现套打纠偏的问题,根据本文提供的思路,也可以做到的。

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值