最近一直跟打印机在打交道,因为项目中使用的报表结构很复杂,需求也比较变态,所以寻求的简单的第三方类库基本上搞不定我的问题。没办法就自己去从零写打印功能。因为项目是依据WPF框架的,所以第一个选择就是使用WPF里面的打印支持,然后解决了各种技术上的问题,最后在测试的时候碰到了一个当时看来比较恶心的问题:打印机的纸张方向控制的问题。
一般来说支持纸张方向的打印机都会支持两种:纵向和横向。因为自己是打印机方面的小白,当时就纠结了。这里面到底是如何操作的呢?最无耻的想法就是:打印机真牛逼,能根据纸张方向将自己要打印的内容直接旋转某个角度进行打印。后来想想不太现实,毕竟版式是自己排的,打印机怎么知道你如何排版的,所以这个方法直接否决了。
如果上面的想法不能成立,那么就得分析一下了,首先,纸张方向会影响到打印机的字体的方向。毕竟打印机吐纸的方向是不会改变的(普通的办公室打印机)。然后自己写程序做了下测试:
测试一:报表的排版是否需要考虑到字体方向的问题
我的测试是在排版的时候判断纸张的方向,如果是横向,手工将打印的版式整体旋转了90度,顺便修改了纸张的宽和高,打印出来的结果是:在纸上旋转了90度后,再加上自己旋转的90度,直接尼玛转了半圈。好吧,看来纸张方向会影响到打印机控制打印的方向。
然后我去掉了旋转的部分,只是单纯的修改了打印范围的宽和高,打印的结果跟预期的一模一样,那么结果就呼之欲出了。。。
结论:设置打印机纸张的方向会影响到打印机输出的方向,需要根据实际情况调整打印范围的宽和高,然后自己重新排版,交给打印机打印就OK了。说到这儿,忽然感觉自己貌似挺简单的 一个问题整复杂了,T_T
时间: 2024-10-11 21:08:51