XiHan.PrintDesigner:基于 Web Components 的框架无关打印设计器项目

快速、轻量、高效、用心的框架无关打印设计器。曦寒懿(XiHanFun)开源生态的一部分。

分支3Tags2

XiHan.PrintDesigner

快速、轻量、高效、用心的框架无关打印设计器

以 Web Components 交付,可视化设计打印模板,在浏览器里预览与打印;配合本地打印客户端可静默直打

English | 简体中文

GitHub Stars Gitee Stars GitCode Stars

Web Components TypeScript npm License

Docs Ask DeepWiki QQ Group

简介

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

相关项目

贡献

欢迎提交 Issue 和 Pull Request。提交遵循 conventional commits 规范,改动需通过 CI 的 lint、类型检查、构建与测试。

支持&赞助

如果此项目对你的开发有助益,也欢迎请作者一杯咖啡。

官方赞助页 https://docs.xihanfun.com/cosmos/sponsor

版权&授权

Copyright (c) 2021-Present XiHanFun and contributors.

本项目采用 MIT 授权,详见 License

XiHan.PrintDesigner 名称、界面视觉设计与原创视觉表达归作者所有,第三方服务分别遵循其各自授权与服务条款。

项目仅供学习参考,作者不承担任何软件的使用风险。

项目介绍

快速、轻量、高效、用心的框架无关打印设计器。曦寒懿(XiHanFun)开源生态的一部分。

https://print.docs.xihanfun.com定制我的领域