以下摘自某个打印论坛,网友出现了因连续打印出现套打偏移的问题后,与专业技术人员的对话:
网友问:“打印的时候第一张单据的打印位置是准确的,到第十张以后的位置就不正确了。这是怎么回事,能不能详细说明一下?”
专家答:“有时按测量的纸张尺寸精确设置报表的纸张页面大小后,用打印机进行实际输出多页时会发生位置偏移,一般都是因为打印机走纸不准造成的。要修正这样的走纸误差,可以一次性连续多打印几页(如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会是一个比较好的选择。如果你有兴趣自已实现套打纠偏的问题,根据本文提供的思路,也是可以做到的。
相关推荐
总的来说,解决Web套打中的纸张偏移问题需要综合考虑纸张设置、打印机性能和软件策略。通过精确调整、纠偏技术以及选择合适的打印工具,可以显著改善打印效果,确保连续打印的准确性。对于开发者而言,理解这些问题...
通过学习和利用相关的源码和工具,开发者可以构建出高效、灵活的Web套打解决方案。对于“draglayout1.html”和“bg.jpg”这两个文件,它们分别展示了动态布局的实现和视觉设计的元素,是构建Web套打应用的关键组成...
套打中只能一行一行读取数据。但是如:同一学生考不同科目的时候。怎么同时读取两行数据。
最后,了解打新过程中可能出现的问题和解决方法也是必不可少的。比如,中签后通常无需额外操作,只要确保账户有足够的资金即可;融资账户可参与新股申购,但需注意维持担保比例和资金准备;即使资金有限,依然有机会...
在套打中,我们需要通过Graphics对象来绘制我们的文档内容,确保它们在打印时能准确无误地呈现。 4. **PrintJob类**:`java.awt.print.PrintJob`类是处理打印任务的核心,它允许我们提交要打印的页面并管理打印过程...
"ACCESS套打源程序"正是为了解决这一问题而设计的,它提供了一种高效、准确的发票打印解决方案,通过ACCESS数据库的强大功能,实现了界面新颖、技术创新的发票套打功能。 ACCESS是微软公司开发的一款关系型数据库...
- `NEXT`和`ENDMERGE`域:在循环套打中,控制域的范围。 - `SEQ`域:用于生成序列号,常用于编号列表。 5. **代码示例** ```csharp using Aspose.Words; // 加载模板 Document doc = new Document("template....
这些文档可能涵盖了如何设置套打模板、导入和导出模板、调整打印位置、设置打印参数、处理套打中的问题等内容。用户可以从中学习到如何利用系统提供的工具,自定义适合自己企业的打印样式,提高工作效率,确保打印的...
面向对象三大特征之多态 input可以根据不同的"type"(条件)产生不同形态 生活中的多态 一件事物根据不同的环境条件,产生不同的结果/... 调用子类中都有重写的那个方法,f.有重写的方法(); 多态的弊端
在医疗门诊发票套打中,程序会根据输入的患者信息、就诊项目、费用明细等数据,自动生成符合标准格式的发票,大大提高了打印效率,减少了人为操作错误。 接下来,我们探讨一下程序的工作流程。一般来说,用户在输入...
- **解决方法**: 开发者可以利用BOS平台提供的API接口来实现图片的上传、显示及打印功能。 **1.14 K/3Cloud BOS开发平台详细介绍** - **背景**: BOS平台是金蝶K/3 Cloud的核心组件之一。 - **解决方法**: 提供了一...
在套打中,VBA主要用于控制打印过程,例如: - 自动遍历数据源的每一行,加载相应的信息到模板。 - 设置打印区域,确保只打印需要的部分。 - 调整页边距和缩放比例,以适应不同的打印机和纸张大小。 - 控制每份...
基于labview的简单打地鼠游戏,根据在实际机器中的实物以及设计思路过程,大致需要地鼠、成绩...以布尔作为控件,当运行时地鼠出现,打中的是数字的显示,用数字显示控件实现。“打中”以左下三胖图案的布尔来提示。
射击问题是一种经典的组合数学问题,通常可以通过排列组合或者动态规划的方法来解决。在这个特定的面试题中,我们被要求计算在十次射击中,总环数达到90环的所有可能情况。由于每次射击的环数可以是1到10之间的整数...
“打地鼠游戏”由三个屏幕组成;屏幕1,由两个标签(“欢迎来到打地鼠游戏”...游戏规则:每次游戏30秒,打中地鼠,得一分,没打中,不得分,倒计时结束,自动跳转至最终成绩,在此页面,也可以选择再来一局或者退出;
打中记分,自由设置时间,通过设置限制游戏时间,自由出鼠,时间可快可慢,都可以修改,代码不长,通过C#window窗体写的,新手上路,请多多照顾,代码不全,请多多指教,有更好的建议可以私信,打地鼠控件不多,只...
已知机器人在第 i 次打靶时,如果 i 为素数,那么机器人必能打中十环。请你设 计程序来计算,在 n 次打靶中,机器人至少能中多少个十环。输入:n,输出:共一行,表示 n 次打靶中,打中十环的最少次数。
构造方法 方法 具体步骤: 1.创建窗口对象 2.创建画板对象 3.类的设计 - 确定类中目前需要的成员变量和成员方法 4.成员方法目前只有一个 - move(), 研究不同类的移动方式 5.创建类需要不同的构造方法 - 初始化成员...
- **例5**:将打中和未打中设为鸡兔,得分差视为脚数差异,通过假设全中求解实际打中的次数。 3. **解题步骤**: - **明确问题**:理解题目给出的条件,找出“头”和“脚”的对应关系。 - **选择方法**:根据...
这种方法在处理如例3中,寻找α粒子打中感光板的区域长度问题时非常有用。 5. **带电粒子在磁场中的运动规律**: - 带电粒子在匀强磁场中运动时,受到的洛伦兹力提供向心力,使得粒子做匀速圆周运动。 - 圆周运动...