開源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實現更多的應用拓展功能及服務,非常適合企業內部各種數據應用的快速開發: