请问有做过小票打印的朋友么,我们最近准备做小票打印,买了个热敏打印机,然后想前端直接调用打印 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
0x01Dev
V2EX    程序员

请问有做过小票打印的朋友么,我们最近准备做小票打印,买了个热敏打印机,然后想前端直接调用打印

  •  
  •   0x01Dev 1 天前 2672 次点击

    打印机是 usb 连接电脑的,然后前端有几种方式调用,一种是使用 window.print ,然后尝试过打印效果非常差,文字很模糊

    然后调研过很多使用 esc pos 指令去打印的,然后折腾了好久,使用 web use 接口,然后访问 usb 直接提示:SecurityError: Failed to execute 'open' on’USBDevice':Access denied ,网上又搜别人说是要下载什么驱动去覆盖,但是不可能让商家下载别的驱动吧,到时候他们之前的功能都使用不了了

    不知道有没有什么通用的解决方案,在网上搜感觉相关资源很少,头疼哇,v 友们有做过类似的功能么

    第 1 条附言    7 小时 56 分钟前
    谢谢大家的热心回复,最后包了一层 electron ,完美解决
    39 条回复    2025-10-20 17:21:39 +08:00
    kazeik
        1
    kazeik  
       1 天前
    没有蓝牙功能吗。手机端用蓝牙可以连接吧
    0x01Dev
        2
    0x01Dev  
    OP
       1 天前
    @kazeik 据我了解,很多小票打印机都不带蓝牙功能。。。我昨天在淘宝京东看了一圈
    Zy143L
        3
    Zy143L  
       1 天前
    @0x01Dev 你关键词加上蓝牙就行了..价格得加个五六十
    liyafe1997
        4
    liyafe1997  
       1 天前
    生成 PDF ,在 Web 端通过浏览器弹出 PDF 或 pdf.js ,然后用 PDF 的打印功能?
    JingKeWu
        5
    JingKeWu  
       1 天前
    我们是购买 lodop 实现打印的
    l1ve
        6
    l1ve  
       1 天前
    你参考一下菜鸟的打印组件,阿里系都用的同一个,他是统一的在本地去运行一个客户端监听端口,然后去打印,前端部分仅限于和自己的打印客户端去通信
    muxw6
        7
    muxw6  
       1 天前
    可以看看 vue-plugin-hiprint
    0x01Dev
        8
    0x01Dev  
    OP
       1 天前
    @Zy143L 我们是服务商家的,不能让商家去换硬件
    0x01Dev
        9
    0x01Dev  
    OP
       1 天前
    @liyafe1997 打印出来很糊的
    xian366
        10
    xian366  
       1 天前   1
    如果是 Windows 上打印,推荐用 Lodop https://www.lodop.net ,功能十分丰富(忽略网站比较复古的样式),稳定,兼容各种打印机,支持 js api ,使用 ws 通信,前端可以直接调用,demos 很多上手很快。正式使用记得购买商业授权,大概几百元。不购买打印小票有底部版权

    如果是安卓蓝牙小票打印,参考看下佳博的 sdk 及其中代码的 demo ,提供好几种语言。

    希望对你有帮助.
    0x01Dev
        11
    0x01Dev  
    OP
       23 小时 38 分钟前
    @xian366 谢谢
    SethShi
        12
    SethShi  
       21 小时 22 分钟前
    我们之前买过直接远程的 wifi 打印机,直接请求一个接口就行
    thtznet
        13
    thtznet  
       21 小时 15 分钟前
    关键字:Zebra,ZPL
    lsylsy2
        14
    lsylsy2  
       20 小时 18 分钟前
    小票打印的核心是它有两种打印模式,一种是你说的 window.print 包括 pdf 等等,本质都是渲染成一张图片然后打印,效果都很差
    另一种模式是 escpos 指令直接编程,是点对点对应的发各种文字图片条形码,这种才能打印出针对小票打印机清晰的内容,驱动的路线是对的,但是 usb 驱动不一定好用可能需要串口
    hanguofu
        15
    hanguofu  
       20 小时 6 分钟前
    不好意思歪一下楼~~ 。 有没有人知道如何用 linux 的小主机通过 USB 驱动 小票打印 机 ?
    yolee599
        16
    yolee599  
       19 小时 56 分钟前 via Android
    本地起一个 http 后台服务,这个服务就调用商家给的二开库,web 页面和后台服务通讯。商家给的库功能是最全的,兼容性最好的
    powersee
        17
    powersee  
       11 小时 34 分钟前 via iPhone
    热敏打印机支持 ZPL 语言的,这种需求我曾经搞过。

    我搞的方向是医院抽血条码(大家体检抽血贴到管子上的那个信息)。

    如果你用 PDF 热敏打印机非常模糊的,尤其是条码部分,几乎无法扫描。

    你可以翻阅 ZPL 语言,但是这个非常冷门,文档也都是英文的,但是依然可以在百度搜索到相关内容,虽然非常少。
    KavinKily
        18
    KavinKily  
       11 小时 13 分钟前   1
    1.针对这种标签打印机,直接通过 windows 的打印是不行的,跟 office 那些完全不是一码事
    2.票据机用的确实是 ESC/POS 指令,标签机一般用的是 tspl 指令,你需要把你要下发的东西根据 pos 指令转成对应的 data 数据,然后下发,或者你也可以考虑看看用 tspl 指令试试,你要确定好你到底是票据机还是标签机
    3.一般的这种票据机针对 pos 指令都是通用的,比如说你要下发文本 AAA 以及一张图片,那么 pos 指令是有针对 AAA 文字内容转成对应的二进制 data ,但是图片是一定要二值化处理的,也就是说我们手机拍的这个照片他的像素点颜色渐变是连续分布的,而这个图片是票据机所不支持的,你需要二值化把他转成点黑白阵图,并需要做误差扩散,然后把点阵图的像素值添加到下发数据的二进制 data 中去;但是同样的针对 AAA 文字以及图片情况也有一些商家的机器是不同的处理方式,他们都是把文字转成图片然后二值化拼接与图片拼接处理,最后是一张图片的内容下发;
    4.如果对第三点无法理解,你直接搜佳博,有对应的 sdk 提供出来,包括说 usb 打印这些其实都是要对应的打印驱动去支持的,另外移动端等也是有对应的 sdk
    realpg
        19
    realpg  
    PRO
       11 小时 3 分钟前
    路线错了

    如果你不想依赖第三方服务, 写一个 windows 原生程序后台 service 启动后 http 监听本地一个端口起 web 服务, 用它调用打印机 暴露 web 接口给你的 web app
    xj3hd
        20
    xj3hd  
       10 小时 47 分钟前
    我做过,用的是 espon 家的热敏小票打印机
    这个打印机支持会自带 http 服务,可以直接通过 http 接口调用的形式直接打印小票
    conglovely
        21
    conglovely  
       10 小时 31 分钟前
    我们用 ZEBRA 的打印机,就用它家的 ZPL 指令去打,生成文件流图片转成 ZPL 去打印
    EgbertW
        22
    EgbertW  
       10 小时 25 分钟前
    生成二值图像,用串口的方式,用 escpos 指令来打印。
    zy0829
        23
    zy0829  
       10 小时 24 分钟前
    @muxw6 配合客户端可以实现静默打印挺好的
    ShundL
        24
    ShundL  
       10 小时 9 分钟前   1
    Lodop 就行了,几年前做过要打印某种检测条码的贴纸,就是用的 lodop
    Razio
        25
    Razio  
       9 小时 34 分钟前
    是不是你生成了图片,canvas 之类的,这种打印出来大概了模糊。lodop 啥的我觉得一般,简单的 html+css 打印都不会吗,这内容干了好几年了,不清晰的只能说是数据或者打印机自身配置的问题。所以其他人通常会用其他工具去减少这种问题,就比如 lodop 、菜鸟等
    katalele
        26
    katalele  
       9 小时 30 分钟前
    之前用过,飞鹅打印机,感觉还不错。wifi ,直接调接口
    wei619588621
        27
    wei619588621  
       9 小时 20 分钟前
    用 html 写页面,然后用 chromedp 转为 pdf,然后用 SumatraPDF 静默打印。
    nullico
        28
    nullico  
       9 小时 17 分钟前
    同样做过打印的,其他楼没有做过小票/标签打印的就不要乱推荐了,不是你们认为的 pdf 打印,另外那个 lodop 不太建议,针对这种场景。只推荐看 18 楼的。另外再说一个坑,楼主是不想让商家更换打印机的话,那就做好有一堆坑的问题。比如,打印机打着打着不打了,打着打着打印机死机了之类的问题,尤其是蓝牙和网口打印机。
    RogerL
        29
    RogerL  
       9 小时 15 分钟前
    我之前做过前端的打印,用的串口
    要求打印的东西比较复杂,所以是先转为了 PDF 再打印的,我是电脑上跑了一个本地服务,本地服务去调用 PDFtoPrinter 这个东西去做的打印,默认打印出来确实挺糊,转为 PDF 的时候可以设置清晰度,最好 2 倍以上,再缩放,这样就清楚了,但是缺点也有,jsPDF 在配置低的电脑上渲染相当慢
    我是建议,如果没什么特别复杂的样式需求,最好直接用 escpos ,这块有条件可以让后端干,传数据就行
    musi
        30
    musi  
       9 小时 12 分钟前
    用 electron 包装一下,Failed to execute 'open' on’USBDevice':Access denied 猜测是产品自己的 usb 驱动把 libusb 给顶掉了。换成 libusb 就行了,可以把整个功能包装成一个应用,用应用去处理就好了
    ratazzi
        31
    ratazzi  
       9 小时 3 分钟前
    Windows 压根不支持 PDF 打印的,都是要自己做栅格化的
    aqqwiyth
        32
    aqqwiyth  
       8 小时 41 分钟前
    https://open.iot.kuaimai.com/#/cloudPrinter 试试我司一个产品配合 jssdk 可以实现需求
    aqqwiyth
        33
    aqqwiyth  
       8 小时 38 分钟前
    不换硬件用用 lodop ,各大电商的打印控件也基本都是抄的 lodop
    0x01Dev
        34
    0x01Dev  
    OP
       7 小时 50 分钟前
    @musi 谢谢,报了一层 electron ,完美解决
    demen
        35
    demen  
       6 小时 58 分钟前
    如果不想用本地控件的方式,我试过一个牌子的芯烨( XINYE )的热敏打印机可以支持云端 api 来打印,非常的方便
    cchan
        36
    cchan  
       6 小时 21 分钟前
    热敏打印机模糊的话可是看看是否分辨率够不够,一般物流面单 203PPI ,再清晰点的可试试 300PPI
    asong
        37
    asong  
       3 小时 14 分钟前
    @0x01Dev 最终是通过 包一层 electron 加 esc pos 指令实现的打印吗
    KongLiu
        38
    KongLiu  
       2 小时 55 分钟前
    以前做过小程序热敏打印,用的 BLE 的
    0x01Dev
        39
    0x01Dev  
    OP
       2 小时 45 分钟前
    @asong 对的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3178 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 12:07 PVG 20:07 LAX 05:07 JFK 08:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86