Skip to content

yang999876/sharedprinter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

如何搭建一个自助打印机

自助打印机整体架构还是比较简单的,需要三个部分,客户端,服务端,打印终端。

客户端

客户端负责让客户选择文件,配置打印设置,支付相应价格,并持续关注打印进度。这里我选择使用微信小程序,方便分享,方便接入微信支付。小程序前端开发的教程,网上已经有很多了,我就不班门弄斧了,这里推荐几个不错的教程。

微信官方的教程和文档,首选

前后端全流程教程,包括备案,https

云开发教程,云开发是微信提供的nodeJs后端解决方案,不需要配置环境,作为学习还是非常方便的

黑马的视频教程

UI框架我使用了ColorUI,这个库提供了色彩丰富的UI组件和预制,使用也很方便。这是官方教程

开发前需要注意,不建议使用小程序云存储作为文件服务器,云存储的文件下载带宽很小,完全满足不了即时打印的需求。我购买了阿里云的服务器,5M带宽,40g固态硬盘,只要及时删除旧打印文件,小规模测试完全够用。

这里重点讲解接入微信支付的步骤。个人资质的小程序是不允许接入微信支付的,如果你需要使用微信支付的服务,你至少需要申请一个个体工商户资质。申请个体户需要一个场地,但这并不意味着你需要租一个办公室才能注册,你完全可以在家注册一个个体户工作室,我当初就是这样操作的,几乎没有什么成本,流程也并不复杂。你需要带上你家的房产证复印件,你的身份证原件和复印件,房产的所有者给你开一个场地使用证明,你就可以去当地工商局注册工作室了。跑两趟工商局,一般就可以办下来了。

服务端

服务端负责接收客户端的文件,将打印文件和配置转发给对应打印终端,并持久化保存用户数据、打印记录之类的。这是我的数据库架构,比较简单,可以参考下

数据库架构

我购买了阿里云的服务器和域名,一年不到两百,小规模运营,算力和带宽都够用。需要注意的是微信小程序不支持http协议,需要使用https协议,如果你像我一样使用web技术栈开发小程序,需要在服务器上配好SSL证书。

这里有免费的https配置教程

Certbot的官网

当然你也可以选择使用TCP协议,那就是另一个技术栈了。

我使用flask作为http服务器框架,MySQL作为数据库。细节就不做赘述了,我写的破烂后端代码没什么参考价值,主打一个能跑就行。

通过Nginx部署flask项目 - 神雕爱大侠 - 博客园

打印终端

打印终端由一台控制机和一台打印机组成,我的控制机使用了Linux系统,使用CUPS控制打印机,CUPS是苹果带头研发的一个Unix环境下的通用打印解决方案,现在已经成为Linux下打印的事实标准。CUPS支持代码接入和使用指令打印,非常适合我这种个人用户编程控制打印机。(企业级通常会用Windows控制打印机,可操作性更好,驱动兼容也更好)

关于控制机选择,有两个坑:一是处理器架构,X86设备优于arm设备,二是操作系统,windows优于linux。我尝试过arm架构的orangePi设备作为控制机,驱动很难找,找到了打印效果也不正常,最后还是换回了X86的升腾c92瘦客户机。

需要注意,并不是所有打印机都有Linux驱动,我一开始选择使用了兄弟牌的2260d,这一款有官方的Linux驱动,而且驱动支持也比较好,基本什么文件都可以打印,但是打印速度比较慢。我使用过的打印机还有兄弟的5585d,这一款也有官方Linux驱动,打印更快,但是很多文件渲染不出来,算是踩了一个坑,不要买这个。我还用过惠普的M501,有Linux驱动,但是不能用命令控制双面打印方向,只能按照设定的横向翻页或者竖向翻页。少量pdf可能打不出来,大部分都没问题。但是驱动支持好不好的信息基本不能从网络上搜索出来,得踩完坑才知道,还是比较坑爹的。选择打印机前唯一能做的就是在官网上搜索是否有官方驱动,没有就不要买了,或者选择使用Windows,用C#开发一个打印控制系统。

这里是一些关于CUPS的教程:

CUPS官网

官方教程,教你用命令行控制打印机。这是我使用的方案

Windows下代码控制打印没有找到一个完整的方案,我找到了一些部分可行的方案,如果有高手知道完整的控制方案,欢迎在评论区分享。

C#实现调用打印机(打印字符串、打印绘图、打印图片),还差打印水晶报表_c#调用打印机-CSDN博客

C#控制打印机打印 - 码农阿亮 - 博客园 (cnblogs.com)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages