问题描述:
1、我们有个文档打印程序,当涉及到既要打印 A4 又要打印 A5 时,A5 的内容打印效果不符合预期(只打印了部分内容出来);
2、程序调用打印传入的信息有:文档内容、打印参数(纸张/方向/...);
环境描述:
1、操作系统连到某固定打印机,通过该打印机去打印这几种文档 —— A4纵向、A5横向、A5纵向;
2、该打印机只有一个纸盒,人工根据要打印的文档格式来放合适的纸(A4固定纵向放纸,A5固定横向放纸);
问题分析:
索性根据涉及到的要素进行组合排列,得到下表的各种设置情况(要想得到期望的效果,应该这样设置)。以此来对照现场情况进行排查,方便快速定位到问题。
说明:
1、打印机放纸方式固定:都是A4纵放、A5横放;
2、操作系统的打印机设置:“A5 + 长边进纸” or “自定义A5横”;(有的打印机没有长边进纸的设置,通过新建自定义纸张的方式也可以解决)
3、“打印命令参数”的纸张和方向应与内容一致(内容区域与纸张方向不一致就需要做个“旋转”);
4、为什么要设置操作系统中的“打印机设置”?
>>猜测是让打印机判断在打印输出时要对内容做"旋转"——要打印的内容方向与进纸如果是一致的则直接打印输出,否则要做“旋转”。
5、为什么当传入A5纸张不能正常打印时,在操作系统中的“打印机设置”中设置自定义纸张却可以?
>>猜测是直接告诉打印机进纸的尺寸方向,不需要再去自动识别而避免了误判。
根据以上,结合WPS/Word等三方程序对比验证,基本能找到问题。
待思考了解:打印机这些设置的作用?
1、打印机的两个输入和一个配置
输入一:传给打印机的信息输入 —— 打印内容 + 打印参数(纸张大小、份数、打印质量等)
输入二:传送进去的纸张 —— 纸盒中的纸(涉及大小和方向等)
配置:操作系统上打印驱动的各种设置。包括:纸张(尺寸/类型)、进纸方向等
2、他们对打印效果的影响?重点只考虑纸张大小和方向
输入一,告诉要打印什么,以及打印需求。 <-疑问:打印内容已经能明确了内容区域的大小和方向了,那么按原始(不缩放)大小打印为什么还要再指定一遍纸张?理论上自动识别即可。
输入二 + 配置,打印机拿到纸张(知道进纸大小和方向),匹配“输入一”的纸张大小和方向,并将内容转移到纸张上。