各位帮帮忙,实在是没有思路了……
问题是这样的,我有一个热敏打印机,打印订单用的。用的是 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 的处理办法,或者命令的处理方法,但是搜索无果。
至此,方法穷了,来这里来了。 求各位给指个方向吧。谢谢了
1
evilic OP 补充一下,我之所以不先排序,再打单的原因是怕打乱了顺序不好发货……
如果大家都没有什么好的思路的话,我还是先排序再打单吧。 |
2
hs0000t 2021-03-28 13:22:48 +08:00 via Android
没用过热敏打印机,帮顶
|
3
LLaMA2 2021-03-28 13:31:42 +08:00 via Android
先查打印机文档,看他支持的纸张尺寸,接着保存 pdf 的时候就要设定好出多。然后按照你既定的方法走
|
6
cctrv 2021-03-28 16:46:49 +08:00 via iPhone 1
|
7
encro 2021-03-28 22:58:27 +08:00
初略看了下这个组件,不是有模板吗?最多修改或者自定义一个模板就行了吧?
|
8
encro 2021-03-28 23:01:39 +08:00
曾经用过快递鸟,也可以。
|
9
ScoutWang 2021-03-29 04:40:02 +08:00 via iPhone
把 pdf 转成 jpg,再调整为热敏纸的大小,再送入打印机打印
|
11
evilic OP @encro 不是这样的……模板是可以调整的,但是打印到 pdf 中的话,pdf 的页面总是 a4 纸的。只是 a4 纸上的内容,是你设置的大小。
|
13
encro 2021-03-29 13:47:45 +08:00
其实我觉得没有必要这么麻烦,先塞入队列 1,然后排序加入队列 2,然后取出队列 2 有序文件,发送给打印机。
没必要转 PDF,虽然我知道改 pdf 页面尺寸的一堆方法。 |