/ReinePrint

一个简易的网页打印服务端,可扩展各类文件格式支持

Primary LanguagePythonMozilla Public License 2.0MPL-2.0

ReinePrint

一个简易的网页打印服务端,完全模块化可随意扩展,基于MPL协议永久免费开源支持商用
所有组件均使用完全开源的解决方案,每一行代码都可被随意审查,MPL协议要求二次开发必须开源,保证了本项目和使用本项目的其他项目都绝对纯净可控
我不赚钱欸我就是玩就是喜欢砸人饭碗
项目名的来源是月亮国公主六边形战士兰音

格式支持

目前已官方支持以下格式:
图片类:bmp,jpeg,jpg,png,tif,tiff
文档类:caj,xls,xlsx,doc,docx,pdf,ppt,pptx,txt,html
预处理文件类:xps,oxps,ps

使用方法

Clone本项目到本地,确认已经安装Python3(需加入PATH变量)和MS Office后,首先运行PythonModuleInit.bat,初始化完成后运行Launch.bat即可启动
如果你使用内置的qrcp接收服务请务必在路由器上放行本机的9980端口
如果你使用内置的filebrowser接收服务请务必在路由器上放行本机的8080端口
请务必确保已经在设置内关闭Let Windows manage my default printer并设置了默认打印机,所有打印都会在默认打印机上进行,请不要把默认打印机设置为Adobe PDF等虚拟打印机测试
如果需要修改打印设置,把打印机的首选项改掉就行了,本项目一律使用你设置的首选项进行打印
本项目可以在多网卡设备上运行,但显示地址和二维码默认只显示第一个IP,但你可以通过本机任意IP访问
如果你需要打印postscript文件,请打开Acrobat Distiller,在文件-首选项中勾选信任所有文件,否则一旦打印postscript文件,弹出的是否信任会打断全自动无人值守状态

运行环境

硬件配置

CPU:推荐2核心4线程以上
内存:可用容量大于4G
网络:稳定的局域网连接,(互联网连接是可选的,支持映射端口开启外网打印)
硬盘:至少拥有200M以上空闲空间(建议安装在只有ASCII字符且无空格的路径中,建议使用无空格的英文用户名)

软件需求

.Net 4.8(oxps文档必须)
Python3(caj,office文档必须)
MS Office 2013以上版本(office文档必须)
Adobe Acrobat Pro DC(postscript必须)

这个项目目前有什么局限性

对于文件名包含逗号和特殊字符的情况无法处理会直接报错并跳过(空格和括号已经可以处理)
在配置极低的电脑上可能无法打印超大型的ppt/pptx
qrcp在无互联网连接获取ip的情况下只能工作在一个网卡上

为什么有些文件打印失败了

请按照以下顺序检查出错原因:

  1. 该文件的后缀是否在当前版本支持范围内且处于启用状态(可使用配置工具查看启用的格式)
  2. 该文件的实际格式是否与后缀相符合(比如后缀为.pptPNG图片无法打印)
  3. 你是否具备该文件格式所必须的运行环境和足够的设备配置
  4. 该文件的文件名是否具备逗号或其他特殊符号
    如果没有上述问题,请提交一个Issue详细描述你遇到的问题,并附上遇到问题的文件

根目录程序内容

ConfigureTool.bat配置工具,可启用或停用格式支持
daemon.bat打印队列服务,请不要单独运行这个程序
EnvChecker.bat环境检查,检查是否可以流畅稳定运行打印服务
Launch.bat启动并管理主服务,平时只需要启动这个程序
PythonModuleInit.bat初始化必须的pip模块,你只需要运行一次
ReineDemoTest.bat测试程序,打印一张兰音的立绘用于测试部署情况

我可以为这个项目做些什么

写一个新的接收服务
写一个新格式的支持
改善本项目的任意组件的源码
提Issue

使用以下开源项目

qrcode.js
caj2pdf(包括MuPDF
wkhtmltopdf
PrintXPS
oxpsConverter
7zip
PDFtoPrinter
filebrowser