杰表技术论坛 's Archiver

admin 发表于 2011-8-29 15:27

如何解决套打中,出现的因连续走纸,导致套打上下偏移的问题?

以下摘自某个打印论坛,网友碰到了因连续打印出现套打偏移的问题后,与专家的对话:

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

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

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

[b]专家[/b]:(雷翻!无语…)[/font]

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

[attach]473[/attach]]

                            第一张(正常)                                                            第五十张 (向下偏移 1.2cm)

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

打印机走纸不准,原因是啥呢?要不就是打印机质量不过关,要不就是打印机老化引起针孔传动机构精度下降,还有啥?待打印机的硬件专家来补充...

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

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

[attach]472[/attach]

jatoolsPrinter打印控件已经引入了这个方法,而且被证明非常有效,下面我就简单说说,jatoolsPrinter如何实现这个连续套打的纠偏功能:
1.        先测量出,票据的实际高度,比如120mm(宽)*100mm(高);
2.        按所得票据大小,设置自定义纸张,jatoolsPrinter可以自动创建自定义纸张类型,不必手动在控制面板/打印机、传真机中设置纸张类型。
3.        按所设纸张,试着连续打印票据,尽量多些,比如50张,假设测得最后一张向下偏移10cm。
在打印控件里,加入如下纠偏代码:[code]settings:{paperWidth:1200,       // 以1/10mm为单位,下同
       paperHeight:1000,
       normalOffset:{
                  offsetPages:50,
                  offset:120,
                  normalPages:5
                  }
}

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

每个校正页的高度计算公式如下:[code]paperHeight – (normalPages * offset / offsetPages )
= 100.0mm- 5 * 12.0mm/ 50 = 98.8mm
[/code]如果你正在开发web 应用,想解决连续套打偏移的问题或需要更灵活地控制打印机,jatoolsPrinter会是一个比较好的选择。如果你有兴趣自已实现套打纠偏的问题,根据本文提供的思路,也可以做到,前提是你需要了解win32 的打印API。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.