请问,用 Electron 打印标签有什么推荐库或者Nodejs相关工具之类的么
请问,用 Electron 打印标签有什么推荐库或者Nodejs相关工具之类的么
现在已经浪费了 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 这里有没有开发过标签打印软件的老司机指条明路,怎样才能让标签 正常 打印出来…… 先感谢一波……毕业设计要严重超时了……
题外话提一句:怎么治宿舍里疯狂抽烟打游戏大吼大叫的室友……
我搞过 tsc 打印机打印二维码打印,打印图片怎么都会出现问题,但是用 tsc 提供的工具就不会,因为这种打印机只能用代码发送命令,而不支持直接打印图片
没看懂
小票打印机我用的 escpos,图片也可以打印
标签打印机不确定是否通用,可以试试
官方没有 SDK 么?这玩意什么原理?和普通打印机一样么?
请问是 TSC 官方提供了 api 么?
需求是打印一些标签,标签中含有条码
escpos 么?感谢,我会去找找试试的
按照得力官网来看,目前是没提供 sdk 之类的,只提供了一些专业标签条码打印软件……系统识别确实是普通连供纸打印机
我突然有一点点想建议楼主用喵喵机。。。
有特殊需求导致不能用热敏来着……
想请问一下…… escpos 是否需要管理员权限来加载 DLL,我刚才尝试一直提示 dll 加载失败…… node-gyp 应该也是正确运行过了
特别刺激,似乎是 USB 驱动不兼容 node-usb 库,然后替换成兼容库之后打印机就完全不识别了……
标签字,我只推荐 Brother
最后希望实现的需求是希望能够适配不同打印机,在 Electron 中配置尺寸和信息后直接开打……所以机器型号啥的…… Brother 就嫌不奢求了吧
标签打印一般有两种方式:
1、驱动打印,与普通打印机一样通过驱动方式打印。
2、通过指令打印,不同厂家的的打印机指令集不一样,可查看厂家提供的手册。
已经有很成熟的商业解决方案 nicelabel。
当然可以有办法免费使用。
不懂 Electron,不过之前我使用 web 技术做过标签打印系统。
使用纯 javascript 实现,
设置网页大小为标签纸张尺寸(参考 http://jsfiddle.net/2wk6Q/3/)可以通过 js 动态生成连续这个页面。
使用 css 布局标签上的内容,边距可以通过 padding 和 margin 控制。
通过 js 变量生成连续编码。一二维码可以调用 js 库进行生成。
然后调用 window.print();打印。
回答最后一个问题:加入一个社团,然后一天到晚都在实验室混就行了,我就是这样,该睡觉了才回宿舍
你愿意学
谢谢!测试了一下……一样出现了打印长度短于纸张宽度时,打印区域会自动旋转的问题……
很感谢,不过实际情况挺尴尬的……我今天通宵了……旁边那哥们也通宵打游戏喊了一晚上……
刚才测试了一下,很感谢!虽然这个里面似乎对于 mm 的支持很差……但是至少终于可以在偏移不算离谱的情况下生成和打印少量标签了。不过这个和其他软件(例如 Word )具有相同问题,打印长度必须大于宽度……不知道怎样才能解决掉……
用 Html 排版个静态文件 然后用 chrome 打开看看能打印吗
electron 自带的如果 Html 能打出来就能打出来 不然可能就要借用点第三方库了
都能打印,但就是和前文描述的一致,一旦页面高度小于宽度,整个页面打印的横向竖向就会翻转
刚才在 word 又试了一会,发现 word 里面在页面高度小于宽度时会自作主张地把横竖向翻转,这样就导致了标签打印方向错误。猜测别的程序也有类似螺丝
抱歉,最后手滑了,猜测别的程序也有相似 逻辑
刚开发一个打印软件。用 pyqt 做成独立程序,可以打印图片,pdf,或者 html(不带图)。执行完美
最好还是确认一下 不清楚 word 会不会加了自动排版
类似的事情我们做过,基本上不建议你在 Chrome 引擎里搞这些事情,因为 Web 标准打印相关的实现本来就很弱,加上浏览器引擎会自带一些 border 设置,基本上都会乱套,你可以考虑 html2canvas 之类的把要打印的内容先转位图再送进标签打印机,这样至少可以保证内文不乱。或者干脆写个 Windows service,大多数的打印机提供.Net 和 Java 的 SDK,开发起来方便很多。
标签打印 SDK 最完善的是 zebra,我不建议你用没有 SDK 的型号自己 hack,从项目的角度讲增加很多成本和风险,比较得不偿失。
旋转 90 度…是不是打印方向跟你预期的不一样- -
请问方便详细说说么?
Word,如果在页面高度高于宽度,页面设置为纵向,印刷一切正常
如果高度小于宽度,无论横纵印刷均为旋转 90 度
谢谢!确实一开始就是打算把要打印的内容转为图像再打印出来,于是才先在 Word 一类的软件中尝试正常打印一场宽度 8cm 高度 3cm 左右的内容。关于机器的选用,理由很简单……穷学生只是想尽量省钱来入手一台热转印机……一开始没有考虑太多,错误地估计了这部分的难度……现在可能确实需要想办法 hack ……
而且还有一点就是……明明都有专门的软件适配多种不同型号……其中应该也不会使用太多不同机种 api,我也很好奇这些软件地实现
当高度小于宽度的时候,无论怎么设置,打印出来的方向都不太对……
lz 这个需求用 electron 没问题的,electron 的主进程是 node 运行时,调 dll 什么的完全没问题。我司现在在做个 pos 打印相关的项目,也是 electron 没什么坑。lz 其实能找到其他语言的库写了然后用 node 调就行了
得力的这个机器很可能是贴牌的,你从驱动里找一下字符串或者从 device_id 或者拆开看一下主板找一下它是哪一家 OEM 的,基本上上游厂家都会给 SDK,国内很多小厂牌收据打印机都是贴牌芯烨 Xprinter 的,你可以找找看。
#8
这个库编译比较麻烦,如果中途出错,最好清掉重新来一遍
权限不记得了,当时是在 win7 上编译和使用的,默认就是 administrator 权限
理论上只要普通的 usb 驱动可以识别到打印机就可以,因为走的是 ESC/POS 协议,应该符合标准的打印机都可以使用的
谢谢!现在还在找库,笑
刚才给得力打了个电话,对方表示 Word 无法正常打印,但是 Excel 可以。我实际测试了一下,确实 Excel 可以正常打印。此外对方明确表示短期不会提供二次开发相关 sdk 之类工具,无奈。
谢谢,vid 0x20d1, pid 0x7008,海鸥的驱动程序……
找到了! Inf 部分显示为 TSC,我或许可以从这里切入试试
之后尝试了多次,发现不是权限问题,是 USB 库不支持这台打印机,笑
此外,excel 可以正常地打印和布局……如果可以实现 excel 的打印效果也就不需要限定打印机型号就能打印了……我个人更希望能这样,笑
说明只是 word 的问题 如果考虑 electron 就试试 html 咯
electron 自带的能用的库我之前找的只找到 node-printer 和自带的 但是 node-printer 要排版就得用 pdf 但是还只支持 linux
如果有 c++基础可以自己写打印的 dll node-printer 本身也是调用那作者自己写的 c++文件 然而那时候赶业务也没时间去学 c++
生成 pdf 再调用 chrome 自己的打印? https://github.com/diegomura/react-pdf
或者菜鸟打印组件? https://www.cainiao.com/markets/cnwww/print
#35 欸,这个不是之前那个自己控制内容的 API 级别的了-,- 我再找找
我走的是 qt 路线
现在就是发现 html 和 word 有相似逻辑,页面宽高会自作主张
谢谢!如果这个软件提供 sdk 的话开发一定能简单很多
这两个都是有个问题……页面高度都大于宽度,在 chrome 上打印正常。但这里需求是打印一些标签,宽度远大于高度的
这样啊…… C 系语言果然还是在解决这种相对基础的问题上更容易一些啊
这个 SDK 浏览了一下,似乎是依赖于机器上预先安装好 BarTender 才可以正常工作…… Excel 却没有这样的依赖
刚才测试了一下,如果直接打印标签的图像(宽 8cm 高 3cm )打印十分完美(使用系统自带的右键菜单中的图片打印入口)
我的需求是无弹出对话框,直接出标签。目前完美实现
请问是走的 windows API 么?
Qprinter 组件,底层实现是 qt 已封装好。
谢谢,参考了这篇文章终于算是实现了一个 std 程序打印一些文本出来了。https://blog.csdn.net/Tobin_Wang/article/details/80585900
谢谢各位前辈悉心指教!已成功解决将位图文件打印出来且方向正确的基本需求
windows API 实现打印图片,图片可以通过 canvas 生成所以不是什么太大的问题
细节中,成功创建打印机 HDC 对象之后,使用下列语句创建一个虚拟的适配的 HDC 对象
( C++语言)
HDC virtualDC = CreateCompatibleDC(hdcprint);
然后通过以下语句来把位图( HBITMAP )拷贝到真实打印机上即可
HBITMAP hOldBitmap = (HBITMAP)SelectObject(virtualDC, img0);
BitBlt(hdcprint, 0, 0, 647, 240, virtualDC, 0, 0, SRCCOPY);
最终打印效果和系统内置图像浏览器的打印效果相同
在Electron中打印标签,有几个推荐的库和Node.js相关工具可以考虑:
-
Node.js printing:
- 专为Node.js和Electron设计,支持PDF文件和图像的打印。
- 特别适用于Windows平台,对特定品牌打印机(如Rollo和Zebra)有良好的支持。
- 示例代码:
import { print } from "pdf-to-printer"; print("path/to/your/document.pdf").then(() => console.log("打印成功!"));
-
nw-printer:
- 跨平台的Node.js打印工具,支持HTML、URL和文件的打印。
- 提供打印预览功能,并允许自定义页眉和页脚。
- 易于集成到NW.js或Electron应用中。
-
electron-tabs(尽管已宣布弃用,但仍值得一试):
- 专为Electron应用设计的标签页库,提供灵活的视图切换和标签页管理功能。
- 可以通过JavaScript API方便地添加、删除或控制标签页,可能间接支持标签打印功能。
-
Node Thermal Printer:
- 适用于控制热敏打印机的Node.js模块,支持多种品牌和型号。
- 可以通过简单的API调用打印文本、条形码、二维码等。
- 示例代码:
const thermalPrinter = require('node-thermal-printer'); thermalPrinter.printer.init().text('Hello, World!\n').cut().execute((err, success) => { if (err) console.error(err); else console.log(success); });
这些库和工具各有特色,选择时可以根据具体需求进行权衡。