请问,用 Electron 打印标签有什么推荐库之类的么

2018-10-22 04:40:22 +08:00
 Handle

现在已经浪费了 4 米纸卷…… 使用的是得力的机器,目前用官方给的标签打印软件倒是工作一切正常。 目前需求是 Electron 调用这台打印机打印一些带有一维码的标签, 标签尺寸为 40mm*30mm,水平 2 列,纸袋宽度约 82mm,纸张间距约为 1.5mm 现在尝试了: Word:无论如何都会莫名其妙旋转 90 度导致打印出现问题 Electron:

content.print() - web 页面单位均已使用 cm,打印页面尺寸如果设置为 8.1*3.15cm,页面会被切分成无数的块 print 以及 node-print 在 electron 下,无法正常调用 DLL

想问下 V2EX 这里有没有开发过标签打印软件的老司机指条明路,怎样才能让标签 正常 打印出来…… 先感谢一波……毕业设计要严重超时了……

题外话提一句:怎么治宿舍里疯狂抽烟打游戏大吼大叫的室友……

9348 次点击
所在节点    Node.js
46 条回复
Handle
2018-10-22 08:50:47 +08:00
@yyss8 抱歉,最后手滑了,猜测别的程序也有相似 逻辑
sunorg
2018-10-22 08:51:34 +08:00
刚开发一个打印软件。用 pyqt 做成独立程序,可以打印图片,pdf,或者 html(不带图)。执行完美
yyss8
2018-10-22 08:54:00 +08:00
@Handle 最好还是确认一下 不清楚 word 会不会加了自动排版
drquest
2018-10-22 09:00:36 +08:00
类似的事情我们做过,基本上不建议你在 Chrome 引擎里搞这些事情,因为 Web 标准打印相关的实现本来就很弱,加上浏览器引擎会自带一些 border 设置,基本上都会乱套,你可以考虑 html2canvas 之类的把要打印的内容先转位图再送进标签打印机,这样至少可以保证内文不乱。或者干脆写个 Windows service,大多数的打印机提供.Net 和 Java 的 SDK,开发起来方便很多。

标签打印 SDK 最完善的是 zebra,我不建议你用没有 SDK 的型号自己 hack,从项目的角度讲增加很多成本和风险,比较得不偿失。
09apple
2018-10-22 09:11:44 +08:00
旋转 90 度...是不是打印方向跟你预期的不一样- -
Handle
2018-10-22 09:15:13 +08:00
@sunorg 请问方便详细说说么?

@yyss8 Word,如果在页面高度高于宽度,页面设置为纵向,印刷一切正常
如果高度小于宽度,无论横纵印刷均为旋转 90 度

@drquest 谢谢!确实一开始就是打算把要打印的内容转为图像再打印出来,于是才先在 Word 一类的软件中尝试正常打印一场宽度 8cm 高度 3cm 左右的内容。关于机器的选用,理由很简单……穷学生只是想尽量省钱来入手一台热转印机……一开始没有考虑太多,错误地估计了这部分的难度……现在可能确实需要想办法 hack ……
而且还有一点就是……明明都有专门的软件适配多种不同型号……其中应该也不会使用太多不同机种 api,我也很好奇这些软件地实现
Handle
2018-10-22 09:15:48 +08:00
@09apple 当高度小于宽度的时候,无论怎么设置,打印出来的方向都不太对……
rockyou12
2018-10-22 09:21:24 +08:00
@drquest lz 这个需求用 electron 没问题的,electron 的主进程是 node 运行时,调 dll 什么的完全没问题。我司现在在做个 pos 打印相关的项目,也是 electron 没什么坑。lz 其实能找到其他语言的库写了然后用 node 调就行了
drquest
2018-10-22 09:29:14 +08:00
@Handle 得力的这个机器很可能是贴牌的,你从驱动里找一下字符串或者从 device_id 或者拆开看一下主板找一下它是哪一家 OEM 的,基本上上游厂家都会给 SDK,国内很多小厂牌收据打印机都是贴牌芯烨 Xprinter 的,你可以找找看。
egen
2018-10-22 09:30:23 +08:00
@Handle #8
这个库编译比较麻烦,如果中途出错,最好清掉重新来一遍
权限不记得了,当时是在 win7 上编译和使用的,默认就是 administrator 权限
理论上只要普通的 usb 驱动可以识别到打印机就可以,因为走的是 ESC/POS 协议,应该符合标准的打印机都可以使用的
Handle
2018-10-22 09:45:29 +08:00
@rockyou12 谢谢!现在还在找库,笑


@yyss8 刚才给得力打了个电话,对方表示 Word 无法正常打印,但是 Excel 可以。我实际测试了一下,确实 Excel 可以正常打印。此外对方明确表示短期不会提供二次开发相关 sdk 之类工具,无奈。

@drquest 谢谢,vid 0x20d1, pid 0x7008,海鸥的驱动程序……
找到了! Inf 部分显示为 TSC,我或许可以从这里切入试试

@egen 之后尝试了多次,发现不是权限问题,是 USB 库不支持这台打印机,笑
Handle
2018-10-22 10:13:16 +08:00
@drquest 此外,excel 可以正常地打印和布局……如果可以实现 excel 的打印效果也就不需要限定打印机型号就能打印了……我个人更希望能这样,笑
yyss8
2018-10-22 11:12:03 +08:00
@Handle 说明只是 word 的问题 如果考虑 electron 就试试 html 咯
electron 自带的能用的库我之前找的只找到 node-printer 和自带的 但是 node-printer 要排版就得用 pdf 但是还只支持 linux
如果有 c++基础可以自己写打印的 dll node-printer 本身也是调用那作者自己写的 c++文件 然而那时候赶业务也没时间去学 c++
drquest
2018-10-22 11:32:42 +08:00
sobigfish
2018-10-22 11:56:18 +08:00
生成 pdf 再调用 chrome 自己的打印? https://github.com/diegomura/react-pdf
或者菜鸟打印组件? https://www.cainiao.com/markets/cnwww/print
sobigfish
2018-10-22 12:17:05 +08:00
@sobigfish #35 欸,这个不是之前那个自己控制内容的 API 级别的了-,- 我再找找
sunorg
2018-10-22 16:33:58 +08:00
@Handle 我走的是 qt 路线
Handle
2018-10-22 18:07:50 +08:00
@yyss8 现在就是发现 html 和 word 有相似逻辑,页面宽高会自作主张


@drquest 谢谢!如果这个软件提供 sdk 的话开发一定能简单很多


@sobigfish 这两个都是有个问题……页面高度都大于宽度,在 chrome 上打印正常。但这里需求是打印一些标签,宽度远大于高度的

@sunorg 这样啊…… C 系语言果然还是在解决这种相对基础的问题上更容易一些啊
Handle
2018-10-22 18:10:39 +08:00
@drquest 这个 SDK 浏览了一下,似乎是依赖于机器上预先安装好 BarTender 才可以正常工作…… Excel 却没有这样的依赖
Handle
2018-10-22 19:01:08 +08:00
@yyss8 刚才测试了一下,如果直接打印标签的图像(宽 8cm 高 3cm )打印十分完美(使用系统自带的右键菜单中的图片打印入口)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/499640

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX