技术解析
各位帮帮忙,实在是没有思路了……
问题是这样的,我有一个热敏打印机,打印订单用的。用的是 cainiao 的打印组件。直接用热敏打印机打抗投诉服务器单肯定是没有问题的。 现在有一个需求,就是要把订单给分类排序,让仓库好分拣一些,把同一类商品的单子在出单的时候放在一起。不过单子在录入的时候却是有先后顺序的。 为了解决这个问题,我的想法是,先用 cainiao 把单子打到 pdf 中去,然后再程序排序后,按分类后的正确顺序,把 pdf 对应的页面发送到打印机打印——如果原来 pdf 文件中的顺序是[1,2,3...],可能程序最终处理的结果是发送给打印机[2,1,3]...
我查找解决方案,走的路其实和 https://stackoverflow.com/questions/27195594/python-silent-print-pdf-to-specific-printer 帖子里的差不多。 首先是 AcroRD32 总是启动,然后看到帖子里面说的 ghostscript,就开始改用 ghostscript 进行尝试(不是 gsprint )。
gswin64c.exe -sDEVICE=mswinpr2 -sOutputFile="%printer%Deli DL-888B" "test.pdf"
果真单子是能打出来的……但另外的问题产生了,pdf 的大小是 A4 的大小,热敏纸的大小是 76x130mm 的,于是,打印 pdf 中的一页,会出 3 张热敏纸,其中第 2,3 页是空白的。 查文档,看文章 https://www.ghostscript.com/doc/current/Use.htm ,加上 -dDEVICEWIDTHPOINTS=w -dDEVICEHEIGHTPOINTS=h -dFIXEDMEDIA 参数,各种调整,打印出来的东西要么是只有一张纸且是空白,要么是一张纸但字儿是缩小后的,要么还是一下出 3 张纸且还是缩小的。(打印出来的效果其实就和 adobe reader 预览里的一样,不能跑到左上角)
继续查解决方法,https://stackoverflow.com/questions/3447720/how-can-i-shift-page-images-in-pdf-files-more-to-the-left-or-to-the-right ,知道 ghostscript 可以设置 PageOffset,不知道我理解的对不对,总是设置无果,报错。
由于 chrome 或者 edge 中的打印是正确的(无论一个 pdf 原本是多大,总是从左上打印到一张纸上后转入下一页的打印),于是我想着有没有 headless 的处理办法,或者命令的处理方法,但是搜索无果。
至此,方法穷了,来这里来了。 求各位给指个方向吧。谢谢了