×

开源免费!这个 Vue 打印设计器,好用到出乎意料

独孤求败 独孤求败 发表于2026-04-28 10:52:50 浏览42 评论0

抢沙发发表评论

想象一个场景:凌晨两点,你刚处理完一个紧急需求——给系统加一个打印模板功能。屏幕上的代码改了又改,预览效果调了又调。老板说"这个字要大一点",于是你改参数;客户说"位置往左挪",于是你调边距。一遍遍循环,直到天亮。

打印功能,这个在业务系统中看似简单的模块,实际上是很多开发者的噩梦。

今天要推荐的这个开源项目,就是来解决这个问题的。

图片

打印功能,为什么总是这么难做?

说打印功能"反人类",一点也不夸张。

传统的打印开发模式是这样的:前端调样式,后端返数据,每次改动都要等渲染结果。如果甲方说"把logo放大2厘米",你可能就要改半天CSS,还得担心不同浏览器、不同打印机的兼容问题。

更头疼的是业务场景的复杂性。合同模板要能填变量、快递单要支持条码、二维码、表格、票据要精确到毫米……每一种场景都是独立的开发任务。

于是很多团队的选择是:要么花大量时间自研,要么买商业组件。但商业组件贵,二次开发又不灵活。

Vue Print Designer 出现的时机刚刚好——它是专门为"业务表单、标签、票据、快递单"这些场景打造的可视化打印设计器,核心就一件事:让打印模板的设计变得简单。

图片

这个设计器能做什么?

先看效果。

Vue Print Designer 提供的是一个拖拽式的可视化编辑界面。用户可以直接在画布上添加文本、图片、条形码、二维码、表格等元素,通过鼠标调整位置和大小,实时预览打印效果。

这意味着什么?

意味着设计模板不再是程序员的专属工作。业务人员学会了也能自己上手,改模板不再需要开发介入。

具体功能分三个层面:

模板设计

  • 可视化拖拽编辑,所见即所得
  • 内置多种元素类型:文本、图片、条形码、二维码、表格……
  • 每个元素都可以精细调整:字体、大小、颜色、对齐方式
  • 网格对齐、元素锁定、分组等辅助功能,让布局更精准

模板管理

  • 保存、加载、分类管理
  • 支持导出为文件,导入共享
  • 模板复用效率大幅提升

打印输出

  • 实时预览,告别"盲改"
  • 支持选择打印机、纸张大小、方向、边距
  • 直接打印,或导出为PDF、图片格式

整个链路覆盖了从设计到输出的完整流程。

用起来有多简单?

先安装:

npm i vue-print-designer
# 或
pnpm add vue-print-designer

在页面中使用,三步搞定:

<template>
<print-designerref="designerRef"></print-designer>
</template>

<scriptlang="ts">
exportdefault {
mounted() {
const el = this.$refs.designerRefas any;
// 初始化品牌与主题
        el.setBranding({ title'业务打印设计器'showLogotrue });
        el.setTheme('light');
// 加载模板或变量
        el.loadTemplateData({
pages: [{
id'page1',
children: [
                    { type'text'content'订单号:{{orderNo}}' }
                ]
            }]
        });
        el.setVariables({ orderNo'A001' }, { mergetrue });
    }
};
</script>

打印?一行代码:

const el = document.querySelector('print-designer'as any;
await el.print({ mode'browser' });

导出 PDF 也是一行:

await el.export({ type'pdf'filename'order-20240223.pdf' });

开发体验上,Vue Print Designer 提供了完善的事件回调机制——ready、printed、exported、error,每个节点都能精准控制。

图片
图片
图片
图片

为什么值得关注?

说几个我观察到的细节:

开源协议。AGPL-3.0 开源协议,可以自由使用、学习和二次开发。不过需要注意,AGPL 属于"强传染性"协议——如果修改了源码并通过网络对外提供服务,需要公开修改后的源代码。对商业闭源产品来说,使用前务必确认是否符合项目合规要求。

技术栈对味。基于 Vue 3 + TypeScript,用 Pinia 做状态管理,代码结构清晰。对于 Vue 开发者来说,阅读源码、二次开发都很顺手。

跨框架集成无压力。项目提供了 Web Components 封装(web-component.ts),不只是 Vue,任何支持 Web Components 的前端框架都能无缝接入。

功能没有短板。模板设计、变量替换、打印预览、导出PDF/图片……这些核心能力都具备,没有明显的能力缺口。

对业务场景的理解到位。不是做一个通用编辑器然后让用户自己适配,而是直接面向"业务表单、标签、票据、快递单"这些具体场景。这种务实的设计思路,让它真正能落地。

图片

适合谁用?

如果你是后端开发者,正在为一个业务系统寻找打印模块的解决方案,Vue Print Designer 可以帮你省掉大量开发时间。

如果你是前端开发者,项目需要集成打印设计器,它提供了 Web Components 封装,可以嵌入到任何前端框架中。

如果你是技术负责人,在评估打印功能的实现方案,这个开源项目值得放进你的方案对比清单。


打印这件事,说大不大,说小不小。每个信息化系统几乎都会遇到,但每次都重新造轮子,确实是浪费。

与其在每个项目里重复"写打印样式-调边距-改字体"的循环,不如花点时间了解一个现成的解决方案。

也许它不能解决你所有的问题,但它至少能让你在面对"改个字"的需求时,不用再熬夜了。

项目地址


https://gitee.com/theGreatOldFive/vue-print-designer


群贤毕至

访客