麒麟系统打印机Generic PCL Laser Printer驱动无法短边翻页?竟是运算符优先级惹的祸
问题描述
接上文,随后有人报告在打印小册子等需要短边翻页双面打印的产物时,无论如何设置短边翻译,打印出来的都是长边翻页,表现为偶数页全部是上下颠倒的。
问题原因
使用腾讯WorkBuddy(CodeBuddy)对代码库OpenPrinting/cups: OpenPrinting CUPS Sources进行审查之后,发现问题根源位于:
//filter/rastertohp.c:186 int mode = Duplex ? 1 + header->Tumble != 0 : 0; //由于运算符优先级,实际上等于下面的代码 int mode = Duplex ? ((1 + header->Tumble) != 0) : 0; //要实现功能和意图的正确代码: int mode = Duplex ? 1 + (header->Tumble != 0) : 0;
解决方法
※注意:该方法仅在银河麒麟上试过,因为是基于银河麒麟构建的DEB包,其他信创系统可能兼容也可能不兼容,还请注意※
printer-driver-pcl-shortedge-fix_1.0-1_amd64.zip
SHA256 的 printer-driver-pcl-shortedge-fix_1.0-1_amd64.deb 哈希:
f7e863646bd136e69e6c1f2fe47e6b0500ebdff133b4bd63f00cc8d928ce911d
1.下载到桌面等地后双击,并安装。

2.在开始菜单找到“打印机”,并打开。

3.点击驱动名称(拍照或者抄写驱动名称,万一不行可以改回去)

4.选择“从驱动库中选择”

5.选择如图所示的驱动。

6.点击确定后进行测试,看看能否正常工作,如果不行则改回原来的驱动。如果有任何问题,可以通过页面底部的表单联系我。
