ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

三分钟搞定标签打印:用免费开源的 LPrint 让标签打印机不再挑系统

三分钟搞定标签打印:用免费开源的 LPrint 让标签打印机不再挑系统 三分钟搞定标签打印用免费开源的 LPrint 让标签打印机不再挑系统【免费下载链接】lprintA Label Printer Application项目地址: https://gitcode.com/gh_mirrors/lp/lprint做标签打印这件事最让人头疼的往往不是打印机本身而是软件。今天要介绍的开源项目 LPrint就是来帮你解决这个问题的它用几个简单的命令就能让 Zebra、DYMO、TSPL、EPSON 这些常见标签打印机在 Linux、macOS 甚至手机上顺畅打印而且完全免费、一个可执行文件搞定一切。一个真实的场景仓库里的标签机又罢工了先讲个朋友小周的故事。他在一家电商公司管发货仓库里有台 Zebra 4 英寸标签机专门打快递面单和货架标签。听起来很简单对吧但现实是这台机器只能插在 Windows 电脑上驱动三天两头出问题快递 API 返回的 PNG 面单在打印机自带软件里各种缩放错位手机想临时打一张退货标签门都没有换一卷标签纸就要重新校准全靠老师傅的手感。小周后来在一台闲置的 Linux 服务器上装了个叫 LPrint 的开源工具前后不到十分钟仓库里的 Windows 电脑、手机、打印服务器全都能直接往这台 Zebra 上丢打印任务了。他说得最多的一句话是早知道有这玩意儿我少加多少班。LPrint 是什么一个只管标签打印的专用服务器LPrint 是一个开源的标签和票据打印机应用作者是 Michael R Sweet——没错就是 CUPS 打印系统的作者本人。他写 LPrint 的初衷很实在他担心 CUPS 的后续改动会让用标签打印机的人没得用于是干脆专门做了一个为标签打印而生的替代品。怎么理解它你可以把 LPrint 想成一家只做标签菜的小饭馆菜单上没那么多花样但每道菜都做得很专。它用一个二进制文件同时干三件事打印队列管理——排队、调度、取消任务打印机驱动——把数据翻译成 Zebra、TSPL、DYMO 等各家打印机听得懂的语言网络打印服务——让其他设备能发现并直接打印。换句话说它既是打印调度员又是翻译官还是前台接待一个人全包了。目前 LPrint 内置支持的打印机包括打印机品牌/系列典型机型对应驱动文件Zebra ZPL各种 2/4 英寸商用标签机lprint-zpl.cZebra/Eltron EPL2老款 Zebra 机lprint-epl2.cTSPL/TSPL2Rollo X1038 等lprint-tspl.cESC/POS 小票机EPSON TM 系列lprint-escpos.cDYMO LabelWriterLW450 系列lprint-dymo.cSeiko SLPSLP 系列lprint-sii.c另外还有 Brother PT/QL 和 Zebra CPCL 两个实验性驱动需要编译时手动开启。三分钟上手装好、认出打印机、打出一张标签第一步安装三条路任选Linux 上最省事的办法是用 snap 安装官方提供了现成的打包sudo snap install lprint sudo snap connect lprint:raw-usb sudo snap start lprint.lprint-server想从源码编译的话先确认环境里有 PAPPL 1.2 以上、CUPS 2.5 以上或 libcups 3.0的开发文件然后git clone https://gitcode.com/gh_mirrors/lp/lprint cd lprint ./configure make sudo make installmacOS 用户可以直接下载官方安装包Intel 和 Apple Silicon 都支持。第二步让 LPrint 认出你的打印机USB 连接的标签机直接运行lprint devices它会列出所有能通过 USB 和 SNMP 发现的打印机及对应的设备 URI。网络打印机可以先在机器上打印一张配置摘要页拿到 IP 地址设备 URI 就是socket://加上 IP比如socket://192.168.0.42。再看看有哪些驱动可用lprint drivers第三步添加打印机并打印第一张标签添加一台 4 英寸 Zebra 打印机假设 IP 是 192.168.0.42lprint add -d myprinter -v socket://192.168.0.42 -m zpl_4inch-203dpi-dt然后直接打一份 ZPL 原始文件lprint mylabel.zpl或者打一张快递面单 PNG指定 4x6 英寸的标签尺寸lprint -o mediana_index-4x6_4x6in label.png到这里你已经完成了一次完整的标签打印。整个过程不需要任何图形界面一条命令搞定这也是 LPrint 最迷人的地方。核心机制拆解它是怎么做到的一个二进制身兼数职前面说过LPrint 只有一个可执行文件它的架构分三层应用层lprint.c是主入口负责解析各个子命令协议层通过 PAPPL 库实现 IPP Everywhere 等网络打印协议PAPPL 同样是作者的开源库专门用来快速搭建 IPP 打印服务驱动层lprint-*.c是各品牌的驱动模块。这和 CUPS 那种重量级设计形成了鲜明对比。CUPS 为了兼容海量打印机每次打印都要反复建立、断开连接而标签打印机往往很娇气频繁断连容易卡纸、丢数据。LPrint 的做法是把多个打印任务合并到同一条连接上连续发送尽量减少连接的开合次数让标签机一直保持顺畅出纸的状态。就这一个细节对批量打印体验的提升是肉眼可见的。驱动模块每个品牌一个 C 文件看项目的源码目录你会发现每个品牌对应一个独立驱动文件比如前面表格里列出的lprint-zpl.c、lprint-tspl.c、lprint-escpos.c。每个驱动里都内置了该品牌常见型号支持的标签尺寸、分辨率、打印速度、浓度等参数还会自动探测打印机的型号和功能。加一个新品牌基本就是照葫芦画瓢多写一个 C 文件不需要动核心代码。这种模块化设计让社区扩展新打印机支持的门槛变得很低。免驱动网络打印手机也能打LPrint 最酷的能力其实在服务器模式。运行lprint server之后每台打印机都会以 IPP Everywhere一种免驱动打印标准苹果的 AirPrint 也基于它的形式出现在网络上。于是你的 Android 手机、iPhone、iPad、Windows 10/11、Chrome OS——几乎所有支持免驱打印的设备都能像找到普通网络打印机一样找到你的标签机直接开打。对仓库里多台设备都要打标签这种场景来说这基本等于免费白得一套无线打印方案。新手最容易踩的坑和对应的解法别拿 master 分支上生产。项目 README 明确警告当前 master 分支有已知问题不适合打包发布请等正式 release。尝鲜可以但别拿去给重要业务用。实验性驱动要手动开启。Brother PT/QL 和 Zebra CPCL 的驱动编译时需要加--enable-experimental而且它们未经完整测试功能可能不全。想当主力用之前一定先用真机验证一遍。ZPL 状态命令的兼容性问题。有些打印机并没有完整实现 ZPL 的状态查询指令。新版驱动已经会自动检测并禁用这些命令但如果你用的是旧版本发现打印卡在查询状态这一步先想想是不是这个原因。media 尺寸名别瞎填。LPrint 的标签尺寸用的是na_index-4x6_4x6in这种自描述名字记不住很正常。最稳的办法是先跑lprint options -d 打印机名看看这台机器到底支持哪些值别凭感觉硬填。URI 和驱动名要对上。常见的坑是 USB 打印机用错了设备 URI或者驱动名拼错。多跑lprint devices和lprint drivers让工具自己告诉你正确答案。改了服务器配置要重启。比如通过lprint.conf修改了监听端口、日志级别等参数后记得用systemctl restart lprint或先lprint shutdown再启动服务器不然改动不生效。进阶玩法让标签打印自动化起来配合脚本做自动打印。快递 API 返回的往往是 PNG 面单你完全可以直接管道给 LPrintcat label.png | lprint -o mediana_index-4x6_4x6in再配合定时任务或订单系统基本就能实现订单来了标签自己打。用 lprint modify 告诉打印机当前装了什么纸。比如 Dymo LabelWriter 450 双卷机型可以用类似下面的命令设置两卷各自的纸型省得每次手动选lprint modify -d Dymo450TT \ -o media-readyoe_address-label_1.25x3.5in,oe_shipping-label_2.125x4in开 Web 管理界面。服务器模式下LPrint 自带一个网页管理界面可以远程添加、修改、删除打印机还能查看任务状态。运维人员不用再 SSH 进去敲命令了。远程提交任务。LPrint 的很多子命令都支持-u参数指向远程 LPrint 服务器的打印队列这样你可以在统一入口管理多个位置的标签机。写在最后标签打印这件事说大不大说小不小但卡在软件上真的很影响效率。LPrint 把装驱动、配队列、管任务、开网络打印这些原本很散的事收敛成了几个命令和一个免费开源的工具。它的价值不在于功能多花哨而在于专业、专注、开箱即用——任何需要打标签的个人和小团队都值得花十分钟亲自试一下说不定你就成了下一个早知道有这玩意儿的人。【免费下载链接】lprintA Label Printer Application项目地址: https://gitcode.com/gh_mirrors/lp/lprint创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进