写了个远程打印程序,让十几年前的有线标签打印机重焕新生

周末在家收拾屋子,翻出来一台十几年前买的标签打印机。
抱着试试看的心态插上电脑,到官网下载了驱动,居然还能用。
https://aibaoguanwang.oss-cn-shenzhen.aliyuncs.com/upload/thumb_src/400_400/1627283181.jpg可这台十几年前的老机器,不带蓝牙和网络功能,只能用数据线连电脑,用不了远程打印。
小孩上学,老师经常在群里发提醒,今天的作业是什么、明天要带什么之类的。
这些消息,等小孩回来了得转述给他,或者是把手机给他看,要是能用标签打印机打印出来就好了,要是能用手机直接打印就更好了。
于是,我就借助AI编程助手(codebuddy)写了个网页版的打印程序,做成了Docker,部署在家里的飞牛nas上,再加上之前申请的域名,(此处放域名链接),整体是个网页,网址类似于https://prints.XXXX.xyz/?token=XXXX。
老师在群里发的文字,我复制一下,粘到这个网页里,点一下打印,家里的标签打印机就能立即打印出来。
我知道有喵喵机、作业帮那种标签打印机,拍照搜题挺厉害,也可以远程打印。但我要的不是再买一个硬件,而是把家里那台老的标签打印机用起来,不用开会员、数据我自己留着,想打什么,网页打开就能打。
当初在做程序方案选型时,尝试过好几条路。
1. CUPS。之前飞牛nas上已经通过CUPS安装了兄弟2140打印机,用起来还是很不错的,可以实现将有线连接的打印机变成无线打印机,手机、平板都可以打印。现在要在CUPS上新增一个标签打印机,配置起来比较麻烦,关键是找不到Linux驱动。
2. EasyPrinter易打印。飞牛官方商店里自带的有这个程序,功能确实很强大,但是大部分不是我需要的,而且实际使用中不顺手的地方,想改还改不了。另外这个程序的体积太大了,我做的Docker占用空间是187MB,这个EasyPrinter占用了1.22GB的空间。


3.企业微信,想着把老师在群里发的信息直接转发到企业微信群里,让群机器人来打印,但是回调、授权等各种配置绕得人头大,直接放弃了。
毛爷爷说过,自己动手,丰衣足食。
于是一咬牙一跺脚,干脆自己写一个。想要什么功能,自己加,哪个按钮看着不顺眼,自己改。
写好之后,我部署在飞牛nas上,网址是http://127.0.0.1:7900,再使用飞牛上的Lucky,把服务反向代理出去,比如说是https://prints.XXX.xyz。

这样不管是在家,还是在外面,用手机浏览器打开就能打印。把这个链接发给家人,别人也能远程打印,不需要注册登录之类的步骤。
下面简单介绍一下这个labelprint程序。
一、程序简介
它就是个网页,手机、平板、电脑,浏览器打开就能用。
最大的好处是写什么打什么,打开的页面本身就是一张纸,你在上面打字,所见即所得,类似于Word,编辑框中是什么样,打出来就什么样(说实话,这一步费了好大劲)。
E:xwechat_filescxs808_5199tempRWTemp2026-109e20f478899dc29eb19741386f9343c83dbe3642e3d2867c1dca887225c60762.png二、常用功能
1.打印文字。这属于基本功能,可以调整字号、对齐方式等。
2.打印图片。上传图片后,能旋转、反色、调深浅,预览里直接看。

3.打印时间戳。打印的时候可以自动添加当前时间,设计了7种时间格式,可以选择打印在最上面还是最下面。

4.无痕模式。正常打印时会记录打印内容,勾选无痕模式后这次打印不写进记录。
5.加了道锁。为了防止别人乱用,我在网址中添加了Token,只有输入正确的Token,才能打开这个网页。

三、如何部署
家里有台常开的机器就行,NAS最合适,服务器、树莓派也行。
1.确认设备路径
把标签打印机的usb接口插到 NAS 上,然后在nas的终端里确认一下设备路径:
ls -l /dev/usb/
会看到 lp0、lp1 之类的名字。如果家里已经接了别的打印机,标签打印机很可能是 lp1,认准哪台是哪台,后面要填。
2.测试打印
使用以下命令测试一下能否直接打印:
echo "123123" > /dev/usb/lp0
如果标签打印机能打印出来,那就可以继续操作了。
3.正式部署
3.1. 拉镜像(Docker Hub 国内直连慢,走代理站;失效就换下面的备选)
docker pull docker.1ms.run/wallech/labelprint:latest
docker tag docker.1ms.run/wallech/labelprint:latest wallech/labelprint:latest
3.2. 启动:host 网络 + USB 打印机直通
docker run -d
--name label-print
--network host
--restart unless-stopped
--device /dev/usb/lp0:/dev/usb/lp0
-e LABEL_PRINT_TOKEN='换成你的随机字符串'
-v "$PWD/label-print-logs:/var/log"
wallech/labelprint:latest
3.3. 验证
curl http://127.0.0.1:7900/health
看到 {"status":"ok","service":"label-print"} 就成了。
成功之后,浏览器打开 http://NAS的IP:7900/?token=你的token 就能用了。再配合飞牛的 Lucky 反代、挂上域名,外面也能访问。
装好以后,手机浏览器把这个网址收藏一下,以后点开就用,跟 App 用起来没区别。
有热敏打印机、又有台NAS的朋友,可以试试,有问题欢迎交流。
代码开源在 GitHub(wallechfox/labelprint),Docker 镜像在 Docker Hub(wallech/labelprint)。
国内镜像地址:
docker.1ms.run/wallech/labelprint:latest
hub.rat.dev/wallech/labelprint:latest
dockerpull.com/wallech/labelprint:latest
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
