开源Python项目:票据设计打印工具

1 简介

大家好我是费老师,市面上的开源票据设计&打印类项目层出不穷,对应所使用到的技术栈也不尽相同。而今天要给大家分享的开源票据设计&打印工具「Dash-Web-Print」,其非常新颖的完全基于Python技术栈实现了前端后端,使得基于它进行二次开发功能拓展非常的友好高效。

2 开源票据设计&打印工具Dash-Web-Print

2.1 项目源码获取

作为开源项目,「Dash-Web-Print」的项目源码已托管至Github和Gitee:

  • Github仓库地址:https://github.com/qweytb/Dash-Web-Print
  • Gitee同步仓库地址:https://gitee.com/yang-tianbao95/dash-web-print

因此可以通过git clone或直接从仓库下载压缩包获取项目源码:

# 从Github拉取源码
git clone https://github.com/qweytb/Dash-Web-Print.git

# 从Gitee拉取源码
git clone https://gitee.com/yang-tianbao95/dash-web-print.git

2.2 项目功能特性

「Dash-Web-Print」截至本文写作时,最新版本为0.1.2,虽然目前还处于早期版本快速迭代中,但其已具备一系列丰富的功能特性。

「Dash-Web-Print」旨在简化布局设计、定制和打印流程。它提供了一个直观的拖拽界面,用户可以通过拖拽组件(如横线、竖线、文本、矩形、表格和二维码)设计模板,并支持通过JSON数据动态填充内容。该应用适用于创建发票、标签和其他自定义文档,具备IP访问控制、浏览器兼容性检查以及多种打印选项(静默打印、弹窗打印和WebSocket打印)。

「Dash-Web-Print」核心功能如下:

  • 纯Python开发:项目完全基于Python开发,只需会Python即可随心所欲二次开发
  • 拖拽界面: 通过拖拽组件(如横线、文本、二维码)到画布上设计布局。
  • 模板管理: 保存、加载和预览存储在数据库中的模板。
  • 动态数据集成: 支持将 JSON 数据绑定到组件(如文本、表格、二维码)以实现动态内容渲染。
  • 纸张大小定制: 支持标准尺寸(A4、A5、A4/3)和自定义尺寸。
  • 组件编辑: 通过右侧表单调整组件属性(如位置、大小、内容)。

打印选项方面,「Dash-Web-Print」具体支持:

  • 静默打印: 通过 WebSocket 服务器直接打印布局,无需用户交互。
  • WebSocket 打印: 通过 WebSocket 服务器实时打印布局,无需用户交互。
  • 弹窗打印: 在弹窗中生成预览以供手动打印。
  • PDF 导出: 将布局转换为 PDF 格式(基于 base64 编码)。
  • 打印机选择: 通过 HTTP API 获取并选择可用打印机。

安全与兼容性方面,「Dash-Web-Print」包含了:

  • IP 白名单/黑名单: 根据客户端 IP 地址限制访问。
  • 浏览器兼容性检查: 强制要求最低浏览器版本,阻止不支持的浏览器(如 IE)。
  • 用户认证: 集成 Flask-Login 进行基本用户管理(当前硬编码为 admin 用户)。

下面是「Dash-Web-Print」内部分操作的演示截图:

票据设计示例:

打印控制示例:

打印预览示例:

打印目标选择示例:

更多项目介绍及功能演示请前往项目源码仓库了解更多:

  • Github仓库地址:https://github.com/qweytb/Dash-Web-Print
  • Gitee同步仓库地址:https://gitee.com/yang-tianbao95/dash-web-print

2.3 项目技术栈

「Dash-Web-Print」之所以可以实现纯Python高效实现应用的前后端,特别是本项目中核心的拖拉拽设计功能,得益于Python生态中的顶级开源全栈应用开发框架Dash,通过直接编写Dash应用逻辑实现各种复杂程度的前端页面及交互功能,配合Dash内置的Flask实现更多的应用拓展功能及服务,非常适合企业内部各种数据应用的快速开发: