快速、轻量、高效、用心的框架无关打印设计器。曦寒懿(XiHanFun)开源生态的一部分。
当前访问频次受限,请登录后继续访问
XiHan.PrintDesigner
快速、轻量、高效、用心的框架无关打印设计器
以 Web Components 交付,可视化设计打印模板,在浏览器里预览与打印;配合本地打印客户端可静默直打
English | 简体中文
简介
XiHan.PrintDesigner 是一款框架无关的打印设计器,以原生 Web Components 交付,Vue、React、Angular 或不使用框架的页面都能直接使用。属于曦寒懿(XiHanFun)开源生态。
设计原则
- 框架无关 - 以原生 Web Components 交付,不绑定任何前端框架
- 零第三方依赖 - 运行时不引入任何第三方包
- 模板即数据 - 模板只是 JSON,不含也不执行任何代码,导入模板不会带来脚本注入
- 数据由使用方掌控 - 组件不发网络请求,数据、存储与权限都经回调交给使用方
- 配套打印客户端 - 本地打印客户端负责静默打印、指定打印机、原始指令打印与导出 PDF,与设计器在同一仓库维护
包结构
| 包 | 说明 |
|---|---|
@xihan-print/core |
模型层:模板 schema、校验与编辑命令,纯 TypeScript,不依赖 DOM |
@xihan-print/runtime |
运行时:业务页面使用的模板预览、浏览器打印与打印客户端连接 |
@xihan-print/designer |
设计器:可视化打印模板设计器 |
依赖方向为 designer → runtime → core。业务页面只需要 runtime,设计器只在需要编辑模板的地方加载。
打印客户端
client/ 是打印客户端:Windows 托盘程序,只监听 127.0.0.1,每个网站首次连接时询问用户一次,打印任务在不跑页面脚本、不联网的沙箱里渲染。业务页面经 @xihan-print/runtime/client 连接它:
import { createPrintClient, printWithFallback } from '@xihan-print/runtime/client'
const client = createPrintClient()
// 经客户端静默打印;只在客户端没有运行时退回浏览器的打印对话框
await printWithFallback(client, schema, data, { printer: '厨房' })
<xh-print-preview> 与 <xh-print-designer> 的 printClient 属性接同一个客户端。业务系统要用 HTTPS 提供(http://localhost 除外):Chromium 系浏览器在网站第一次访问本机应用前会询问一次。
本地开发
需要 Node.js 24+ 与 pnpm 11+。
cd print
pnpm install
pnpm build
其余命令:pnpm typecheck、pnpm test、pnpm lint。
开发预览页(示例模板的分页预览、浏览器打印与设计器,不是产品):在 print/ 下启动,打开 http://localhost:5191 。
# XiHan.PrintDesigner/print
pnpm dev
相关项目
- XiHan.Framework - .NET 模块化开发框架
- XiHan.UI - 框架无关 Headless UI 组件库
- XiHan.BasicApp - 基于 XiHan.Framework 和 XiHan.UI 的超高颜值通用中后台内核
- XiHan.FlowDesigner - 框架无关流程设计器
- XiHan.FormDesigner - 框架无关表单设计器
- XiHan.ReportDesigner - 框架无关报表设计器
贡献
欢迎提交 Issue 和 Pull Request。提交遵循 conventional commits 规范,改动需通过 CI 的 lint、类型检查、构建与测试。
支持&赞助
如果此项目对你的开发有助益,也欢迎请作者一杯咖啡。
官方赞助页 https://docs.xihanfun.com/cosmos/sponsor
版权&授权
Copyright (c) 2021-Present XiHanFun and contributors.
本项目采用 MIT 授权,详见 License
XiHan.PrintDesigner 名称、界面视觉设计与原创视觉表达归作者所有,第三方服务分别遵循其各自授权与服务条款。
项目仅供学习参考,作者不承担任何软件的使用风险。