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