哈喽哇!我是小不 ,不简说的不~
时隔快一年,sv-print 的更新日志攒了一大堆,光版本号就数不过来 😂
今天这期,主打一个合订本 ------从 2025-07-11 到 2026-04-30,将近 30 个版本的更新,全给你捋清楚。新增功能、优化增强、Bug 修复,分门别类,附带代码示例,看完直接起飞 🚀
Ps:建议收藏,以后查 API 直接翻这篇就够了!
🎯 新增功能(重点中的重点)
1. 多语言 i18n 插件
2025-07-25 新增
@sv-print/plugin-i18n
国际化需求终于原生支持了!右键菜单、插件元素属性全部适配。后续 2025-07-29 又适配了移动端 toolbar。
html
// vue3 为例
<template>
<Designer :plugins="plugins"></Designer>
</template>
<script setup lang="ts">
import { onMounted, ref } from "vue";
import { Designer } from "@sv-print/vue3";
// 先安装所需插件: eg: npm i @sv-print/plugin-i18n
// 再引入插件
import pluginI18n, { translateBySelector } from "@sv-print/plugin-i18n";
import en from "./i18n/en.json"; // 自己准备多语言文件
const plugins = ref([
pluginI18n(
{
// lng: "英文", // 默认: "简体中文"
// debug: true, // 调试: 可查看对应语言 缺少的翻译
resources: {
// 自定义 key: "英文", 则列表 显示对应的名称
英文: {
translation: en,
},
},
},
(i18next, t, err) => {
// 回调,干点儿其他的
console.log("测试翻译", t("文本"));
// 插件提供的一个 API, 根据 选择器 翻译
// translateBySelector([".sv-print"]);
},
),
]);
</script>
2. 文本字体自适应插件
2025-08-07 新增
@sv-print/plugin-text-auto
文字太多放不下?自动缩小字体适配容器,告别溢出。2026-04-14 还新增了 overFontSize 参数。
js
import pluginTextAuto from "@sv-print/plugin-text-auto";
let plugins = [
pluginTextAuto({
sizeList: [12, 5, 4, 3, 2, 1], // 适应最小字体选项
maxIterations: 15, // 适应次数
enablePrecision: true, // 启用精确适应
precision: 0.5, // 适应精确step
precisionCount: 10, // 适应精确次数
lineHeightMode: "auto", // 行高模式 auto | original | normal | unset
overrideHidden: false, // 超出是否隐藏
extendsCss: {
// 扩展css
"word-wrap": "break-word", // 单词换行
},
}),
];
3. 自定义格式化插件
2025-08-28 新增
@sv-print/plugin-formatter
数据格式化不用再写一堆函数了,插件统一搞定。
html
<template>
<Designer :plugins="plugins" />
</template>
<script setup lang="ts">
import { ref } from "vue";
import { Designer } from "@sv-print/vue3";
import pluginFormatter from "@sv-print/plugin-formatter";
const plugins = ref([
pluginFormatter({
name: "格式化器", // 参数名称
funList: [
{
name: "转大写", // 展示名称
key: "toUpperCase", // 格式化器key
fun: (value) => {
return `${value}`.toUpperCase();
},
},
{
name: "自定义",
key: "test",
fun: (value) => {
return `${value}+自定义`;
},
},
],
}),
]);
</script>
4. 可分页 shtml 插件
2025-08-21 新增
@sv-print/plugin-ele-shtml,后续持续增强
支持自动分页的 HTML 元素插件,还能配置表头/脚重复显示逻辑。
迭代记录:
- 2025-10-21:支持表格的分页处理 + 表头/脚重复显示逻辑
- 2025-12-21:支持分页处理函数
- 2026-04-27:支持渲染前处理函数,用于部分 HTML 特殊处理
5. Word 转 HTML 插件(w2html)
2025-12-21 新增
@sv-print/plugin-ele-w2html
复制 Word 文档直接转 HTML,支持自动/手动分页。这功能...怎么说呢...以前想都不敢想 😂
客户端也同步新增了 io 事件处理 w2html 本地文件。
ts
import pluginEleW2html from "@sv-print/plugin-ele-w2html";
import pluginE2Table from "@sv-print/plugin-ele-e2table";
const plugins = [
pluginEleW2html({
// 需要借助 sv-print客户端^2.0.7 才能处理本地文件
type: "base64", // 默认 base64. 上传类型 base64 | upload
options: {
// type:upload 时 axios 上传配置
url: "http://localhost:3000/api/core/upload",
headers: {},
params: {},
timeout: 10000,
},
}),
pluginE2Table({
placeholder: "<div>粘贴excel表格内容</div>", // 元素占位 html
}),
];
hiprint.register({
authKey: "", // 授权key
plugins: plugins,
});
6. 子模板插件(plugin-ele-box)
2026-04-14 新增
@sv-print/plugin-ele-box
支持模板 JSON 和 HTML 模板字符串,自动分页。嵌套模板终于有官方方案了!
7. 0.2.0 大版本更新
2025-09-15 发布,里程碑版本 🎉
这一波更新量巨大,挑重点说:
新组件导出:
Preview预览组件(vue3/react/vue)DragBox拖拽盒子组件(vue3/react/vue)
设计器增强:
- 标尺样式自定义
rulerStyle,标尺显示拖拽元素宽高 - 历史记录拖拽盒子
- 一键隐藏/显示所有拖拽盒子
- 自定义新增面板参数 +
newPanelhook design('#id', { activePanel: true })默认选中面板
表格增强:
- 支持选中 & 复制功能
- 支持一行多组排列(横排/竖排)
架构调整:
- 代码编辑器 →
@sv-print/plugin-view-code-edit插件 - toImage API →
@sv-print/plugin-api-image插件 - toPdf API →
@sv-print/plugin-api-pdf3或@sv-print/plugin-api-pdf插件
0.2.x 组件升级:vue3、react、vue 组件均导出 Designer(设计器)、Header(顶部栏)、Preview(预览组件)、DragBox(拖拽盒子) 四个常用组件。API 升级:使用 Promise 异步获取数据。完善基础 TS 类型支持。抽离部分 API,使用插件形式引入:toImage、toPdf
js
let templateJson = {};
let hiprintTemplate = new hiprint.PrintTemplate({ template: templateJson });
const printData = { name: "i不简" };
let offsetOption = { leftOffset: -1, topOffset: -1 };
// 获取预览 html
const htmlObj = await hiprintTemplate.getHtml(printData, { ...offsetOption });
const html = htmlObj.html();
// 浏览器打印
await hiprintTemplate.print(printData, { ...offsetOption });
// 批量打印
await hiprintTemplate.print([printData1, printData2, printData3], {
...offsetOption,
});
// 客户端静默打印
const res = hiprintTemplate.print2(printData, { ...offsetOption });
// 导出图片 需引入插件 @sv-print/plugin-api-image
await hiprintTemplate.toImage(printData, {
...offsetOption,
isDownload: false, // 不自动下载, 默认true 自动下载
name: "图片名称",
pixelRatio: 2,
quality: 0.8,
onProgress: (cur, total) => {
const percent = Math.floor((cur / total) * 100);
console.log("toImage 进度", percent);
},
});
// 导出Pdf 需引入插件 @sv-print/plugin-api-pdf3
await hiprintTemplate.toPdf(printData, "test.pdf", {
...offsetOption,
isDownload: false,
pixelRatio: 2,
onProgress: (cur, total) => {
const percent = Math.floor((cur / total) * 100);
console.log("toPdf 进度", percent);
},
});
// 多模板情况
await hiprint.print({
templates: [
{ template: hiprintTemplate, data: printData },
{ template: hiprintTemplate, data: [printData, printData, printData] },
],
});
// 客户端相关 API
await hiprint.setHost("http://localhost:17521", "token");
await hiprint.hiwebSocket.stop();
await hiprint.hiwebSocket.start();
await hiprint.getAddress();
await hiprint.getClientInfo();
await hiprint.refreshPrinterList();
8. 多个字段名 & 自定义字段名值获取
2025-07-22 新增,2025-12-08 增强嵌套路径支持
支持设置多个字段名(逗号分隔),自定义获取方法。2025-12-08 增加了嵌套路径支持:a.b.c 或 list[0].a 形式。
js
// 第3个参数 printData, 兼容表格列数据获取.
const customDataFun = (data, field, printData) => {
let fieldData;
const fieldList = `${ field }`.split(",");
const len = fieldList.length;
for (var i = 0; i < len; i++) {
const f = fieldList[i];
const curData = (f.split(".").reduce((a, c) => (a ? a[c] : data ? data[c] : ""), false) || "");
// 如果是表格: curData 是个对象哟
if (typeof curData == "object") {
if (Array.isArray(curData)) {
fieldData = [...fieldData || [], ...curData];
} else {
fieldData = {...fieldData || {}, ...curData};
}
} else {
const connector = i == 0 ? '' : '->'
// 有必要考虑 number 情况么?
fieldData = `${ (fieldData || '') }${ connector }${ curData }`;
}
}
return fieldData;
};
// 组件中
const fun = ref(customDataFun);
<Designer :customDataFun = "fun" / >
// 或者
const hiprintTemplate = new hiprint.PrintTemplate({
template: panel, // 模板
customDataFun: customDataFun,
});
// 或者
hiprintTemplate.setCustomDataFun(customDataFun);
9. 表格动态列
2025-08-20 新增,2026-03-12 增强动态列函数配置
列设置 autoField:"标题#字段名,字段名2",动态列不用手动配。2026-03-12 还支持了动态列函数配置。
在表格列配置中设置 autoField,格式为 "显示标题#字段名1,字段名2",设计器会根据数据自动生成对应列。
10. 面板支持字段名(批量渲染)
2026-01-13 新增
单个面板批量渲染,配合字段名参数,一套模板搞定多页。
11. 自定义主题设置
2026-01-25 新增
支持 CSS 变量、HSL、OKLCH、Hex 等多种颜色格式,主题定制更灵活。
html
<template>
<Designer
:theme="[
{
theme: '自定义1',
primaryColor: 'oklch(45% .24 277.023)',
},
{
theme: '自定义2',
primaryColor: 'hsl(355, 100%, 42.95%)',
primaryContent: '#fff',
secondaryColor: 'hsl(24.93, 100%, 42.94%)',
secondaryContent: '#fff',
},
{
theme: '自定义3',
primaryColor: 'var(--primary)',
},
]"
/>
</template>
12. 面板显示页眉/尾线
2025-09-25 新增
可视化页眉页脚边界,设计时不再靠猜。
13. 面板支持旋转角度
2025-10-27 新增
横竖排切换更方便了。
14. 表格格式化函数支持返回数组
2026-03-12 新增
格式化函数终于能返回数组了,数据处理更灵活。之前只能返回字符串,现在直接返回数组即可。
15. 行分页方式
2026-04-30 新增
表格分页新增"尝试下一页/当前页"的行分页方式,分页逻辑更智能。
16. 隐藏规则增强
2026-04-14 新增
隐藏规则支持"无数据占位/不占位"两种模式,排版更可控。
17. 排列填充纸张增强
2026-02-07 增强
支持纸张宽高、纸张样式设定。print/print2/toPdf 插件全部适配,可手动传参覆盖。print 支持 statusCallback 参数回调。
js
// 排列填充纸张
const printData = Array.from({ length: 31 }, (_, i) => ({
name: "数据" + i,
}));
const html = (
await hiprintTemplate.getHtml(printData, {
paperWidth: 210, // 纸张宽度 mm
paperHeight: 297, // 纸张高度 mm
paperStyle: {
"justify-content": "center",
},
})
).html();
// 打印
await hiprintTemplate.print(printData, {
paperWidth: 210,
paperHeight: 297,
paperStyle: {
"justify-content": "center",
},
});
// 直接打印
await hiprintTemplate.print2(printData, {
paperWidth: 210,
paperHeight: 297,
paperStyle: {
"justify-content": "center",
},
});
await hiprintTemplate.toPdf(printData, {
name: "pdf名称",
paperWidth: 210,
paperHeight: 297,
paperStyle: {
"justify-content": "center",
},
onProgress: (cur, total) => {
const percent = Math.floor((cur / total) * 100);
console.log("toPdf 进度", percent);
},
});
// statusCallback 示例
let options = { leftOffset: -1, topOffset: -1 };
let ext = {
callback: () => {
console.log("浏览器打印窗口已打开");
},
statusCallback: (data) => {
console.log(data);
},
styleHandler: () => {
return `<link href="https://fonts.googleapis.com/css2?family=ZCOOL+KuaiLe&display=swap" rel="stylesheet">`;
},
};
hiprintTemplate.print(printData, options, ext);
18. 客户端新功能
2025-08-01 客户端 @2.0.3:
- MQTT 服务 + 在线测试 HTML
- 预览功能,打印日志支持预览模板/HTML
- 在线设计支持新窗口打开,自定义设计器地址
- 模板中心支持自定义 API 请求
2025-08-12 客户端 @2.0.4:
- 应用内更新(全量/增量更新)
- 拖拽 config.json 更新配置,xxx.zip 更新渲染器
type: capture返回图片- 统一 socket.io / mqtt 回调事件
js
// 这里使用 sv-print 内置的 socket.io 对象, 默认连接 http://localhost:17521/
hiwebSocket.socket.on("success", (e) => {
console.log(e);
});
hiwebSocket.socket.on("error", (e) => {
console.log(e);
});
// 兼容 默认的 print2 方法
hiwebSocket.socket.emit("news", {
// "printer": "PDFwriter",
type: "capture",
// capture 打印 返回的类型 canvas.toDataURL('image/' + captureType) 同时也是扩展名
captureType: "jpeg",
buffer: true,
// "toNet": true, // 是否仅渲染返回 网络pdf地址
template: {}, // 模板json
printData: {}, // 打印数据
templateId: "aec8bc1a-f53a-44d4-81dd-13c5a363f612", // 用于 success,error 回调中区分是哪个模板
});
// 可统一使用
hiwebSocket.socket.emit("print", {
// "printer": "PDFwriter",
type: "capture",
// capture 打印 返回的类型 canvas.toDataURL('image/' + captureType) 同时也是扩展名
captureType: "jpeg",
buffer: true,
// "toNet": true, // 是否仅渲染返回 网络pdf地址
template: {}, // 模板json
printData: {}, // 打印数据
templateId: "aec8bc1a-f53a-44d4-81dd-13c5a363f612", // 用于 success,error 回调中区分是哪个模板
});
19. 移动端触摸支持
2025-07-11 新增,2025-07-29 改用 CSS zoom
触摸事件支持 & 移动端 UI 适配,touchZoom 双指缩放。
js
const box = globalThis.$("#preview_content .hiprint-printPaper");
const ww = window.innerWidth - 64; // 64: 边距
const tw = box.width();
const zoom = Math.round((ww / tw) * 100) / 100;
box.css({
transform: `scale(${zoom})`,
"transform-origin": "0px 0px",
});
globalThis.$(box).touchZoom({
minScale: 0.2,
maxScale: 6.0,
transform: true, // 启用 transform 缩放
});
20. 根据 tid 添加元素
2025-07-11 新增
支持根据 tid 动态添加元素到面板,还能指定位置。
js
printTemplate?.addPrintElementToPaperByTid("defaultModule.text");
// 添加到指定位置 pt
const left = 10;
const top = 30;
printTemplate?.addPrintElementToPaperByTid("defaultModule.text", left, top);
21. providerMap 自定义渲染函数
2025-07-11 新增
hiprint.PrintElementTypeManager.build 支持自定义渲染可拖拽元素列表。
js
const providerMap = ref({
container: ".hiprintEpContainer",
value: "defaultModule",
render: (list) => {
let container = globalThis.$(
'<div class="hiprint-printElement-type"></div>',
);
// xxx
return container;
},
});
hiprint.PrintElementTypeManager.build(
".hiprintEpContainer",
"defaultModule",
(list) => {
let container = globalThis.$(
'<div class="hiprint-printElement-type"></div>',
);
list.forEach(function (item) {
const box = globalThis.$(`
<div class="draggable-ele-group">
<span class="title">${item.name}</span>
<div class="list"></div>
</div>
`);
const typeList = box.find(".list");
item.printElementTypes.forEach(function (t) {
typeList.append(`
<div class="draggable-ele ep-draggable-item" tid=${t.tid}>
<i class="svicon sv-base sv-${t.type}"></i>
<p style="white-space:nowrap">${t.getText()}</p>
</div>
`);
});
container.append(box);
});
return container;
},
);
22. 对齐纸张 & 批量对齐
2025-07-11 新增
setElsAlign 支持对齐纸张,单项默认对齐纸张,多选按住 ctrl/command 键可批量对齐。
js
printTemplate?.setElsAlign("left", true);
printTemplate?.setElsAlign("right", true);
23. 锁定元素禁止调整大小
2025-07-11 新增
锁定元素后禁止调整大小,全局配置 disableNoDraggableSize 默认 true。
js
hiprint.setConfig({
disableNoDraggableSize: false, // 锁定元素,可编辑属性 宽高大小
});
24. buildPagination 构建多面板菜单
2025-07-11 新增,2026-01-25 支持默认选中
手动构建多面板菜单。
js
// 手动构建多面板菜单
printTemplate.buildPagination("#printPanels");
25. 支持 模板字符串 值替换
2025-07-11 新增
面板页码${paperNo}、${paperCount}和${field}字段值替换,编辑就完了。
26. Header 组件导出
2025-06-26 新增
vue/vue3/react 组件均导出 Header 组件。
js
import { Header } from "@sv-print/vue";
import { Header } from "@sv-print/vue3";
import { Header } from "@sv-print/react";
27. toolbar setZoom 设置默认缩放
2025-06-26 新增
js
const onDesigned = (e) => {
const { designerUtils } = e.detail;
designerUtils.toolbar.setZoom(1.5);
};
🌈 优化增强(体验拉满)
导出质量提升
| 版本 | 优化内容 |
|---|---|
| 2025-07-11 | 导出 PDF/图片部分元素清晰度 & 导出图片支持 quality: 0~1 |
| 2025-09-22 | api-image 插件导出图片缩放(pixelRatio)问题 |
| 2025-12-24 | 使用号称地表最强的 snapdom 库,导出图片质量大大提高 |
| 2026-01-07 | 导出图片,pdf api 插件(异步图片加载问题) |
对齐 & 布局工具
2025-08-06 新增 toolbar 水平/垂直间隙、网格对齐
js
// 消除水平间隙
printTemplate?.setElsAlign("clearVer");
// 消除垂直间隙
printTemplate?.setElsAlign("clearHor");
// 默认2列 网格对齐
printTemplate?.setElsAlign("clearGrid");
// 水平间隙
printTemplate?.setElsSpace(10, true);
// 垂直间隙
printTemplate?.setElsSpace(10, false);
// grid网格对齐
const column = 2;
printTemplate?.setElsGrid(column);
设计器组件增强
| 版本 | 优化内容 |
|---|---|
| 2025-07-11 | 导出 PDF/图片清晰度优化 & 导出图片支持 quality: 0~1 |
| 2025-07-11 | 双击编辑功能(可编辑为html) |
| 2025-07-11 | 删除元素逻辑(锁定元素,全选元素) & 右键菜单删除情况 |
| 2025-07-11 | 预览支持设置是否隐藏 导出图片,导出PDF以及直接打印按钮 |
| 2025-07-11 | 全选时触发元素选中事件 |
| 2025-07-11 | designer 组件传 template 为模板对象时,默认事件处理 |
| 2025-08-20 | 模板对象新增 goBack API 更新到指定历史记录位置 |
| 2025-08-20 | 表格调整表头操作(合并单元格,插入,删除,对齐等),同时记录操作历史 |
| 2025-08-20 | html 元素支持: 标题,字段名,测试数据 |
| 2025-08-20 | 默认 provider & 新增分页符自动适配纸张宽度 |
| 2025-08-20 | 创建元素异常时友好提示(抛出【xxx】类型元素无法创建...) |
| 2025-09-15 | 多面板操作功能, 切换选中面板, 删除最后一个时创建默认面板 |
| 2025-09-15 | 拖拽元素时同步更新右侧参数的坐标大小 & 表格调整宽度问题 |
| 2025-09-15 | 操作历史重复记录问题 |
| 2025-09-15 | 新拖拽元素初始位置问题 |
| 2025-11-12 | headerMenuList 支持完全自定义顶部右侧菜单 |
| 2025-11-12 | designerUtils 新增 previewClick, setPrintData 方法 |
| 2026-02-25 | designOptions 支持 adaptToSize:true 缩放适应屏幕大小 |
| 2026-04-14 | 模板对象支持 defaultPanelIndex 参数 设计时默认选中面板 |
表格相关优化
| 版本 | 优化内容 |
|---|---|
| 2025-08-05 | 表格行/列合并函数,跨页合并显示问题 |
| 2025-08-20 | 表格头排序列表显示 |
| 2025-08-28 | 自定义获取数据函数回调新增当前元素: (ele, data, field, printData) => data |
| 2025-08-28 | 批量预览/打印渲染性能问题 |
| 2025-08-28 | 表格在一些特殊场景下(页眉线之上,页脚线之下,每一页高度都不够的情况)卡死的问题 |
| 2025-08-28 | 表格列支持动态扩展新参数 |
| 2025-08-28 | 表格列格式化函数/样式函数回调参数统一, 新增返回当前列信息 |
| 2025-09-15 | 表格统一使用 "fields" 作为字段名下拉选项源. 表格列则使用 "columnFields" |
| 2025-09-15 | 表格列部分函数编辑未能及时生效问题 |
| 2025-09-25 | 更新模板json(大纸张 => 小纸张) 时页眉/尾线边界值的处理 |
| 2025-10-20 | 表格支持设置允许超过行高(高的多少分之一) => 表格分页边界留白优化处理 |
| 2025-10-20 | 表格合并列填充数据问题 & 创建表头/脚行时过滤合并的行/列 |
| 2025-10-20 | 样式/格式化函数的 placeholder |
| 2026-04-14 | 表格 stylerHeader(表格头样式函数) 回调调整 column,options,tableData,printData |
| 2026-04-30 | 表格分页逻辑优化 & 新增行分页方式(尝试下一页/当前页) |
| 2026-04-30 | 表格在页脚线之下设计时未显示的 bug |
多面板性能优化
| 版本 | 优化内容 |
|---|---|
| 2025-08-28 | 批量预览/打印渲染性能问题 |
| 2025-10-27 | 历史记录功能优化 |
| 2026-04-27 | 仅构建当前设计面板元素,概览图功能优化 |
| 2026-04-27 | dragbox 功能优化 |
移动端适配
| 版本 | 优化内容 |
|---|---|
| 2025-07-11 | 支持触摸事件 & 适配移动端 UI |
| 2025-07-29 | touchZoom 使用 css "zoom" 做缩放 |
| 2025-07-29 | 移动端预览多页高度显示问题 |
| 2025-10-20 | 移动端样式导致的无法操作问题 |
| 2025-11-12 | 移动端点击拖拽元素失效问题 & 优化部分样式问题 |
其他值得关注的优化
- 2025-06-26
hiprint.setConfig方法,支持扩展插件元素属性 & 支持 before
js
hiprint.setConfig({
// 插件新元素的 元素属性
xxx: {
tabs: [{}],
},
text: {
tabs: [
{},
// 当修改第二个 tabs 时,必须把他之前的 tabs 都列举出来.
{
name: "样式",
options: [
{
name: "scale",
before: "color", // 自定义参数,插入在 color 之前
hidden: false,
},
],
},
],
},
});
- 2025-06-26 新增
hiprint.getOptionItems查看所有元素参数对象 &getOptionItemhook
js
// 元素的所有参数对象
const optionItems = hiprint.getOptionItems;
// hook getOptionItem
const getOptionItemHook = {
hook: "getOptionItem",
name: "对元素参数做一个包装",
description: "渲染元素属性时,构建更多值,或者做多语言处理",
priority: 1,
run: (item) => {
// 示例 给 元素属性 添加一个 data-name 属性
const oldCreate = item.createTarget;
item.createTarget = function (...args) {
const target = oldCreate.call(item, ...args);
console.log(target);
target.attr({
"data-name": item.name,
});
return target;
};
return item;
},
};
- 2025-06-26 水印内容支持
${name}取打印数据中的字段值 - 2025-06-26 缩放时元素的[位置大小],[删除按钮]缩放问题
- 2025-08-20
hinnn.toUpperCase支持传自定义函数(Nzh,val)=> val. Nzh 挂载到全局和 hinnn 上 - 2025-08-20 基础元素 text,html,longText 格式化函数错误回显 & 样式函数回调新增当前页 paperNo
- 2025-09-22 bwip-js 条码插件支持缩放比例(调整条码宽度),内嵌文本支持字体大小,颜色,字间距等.支持边距设置 && 支持自定义渲染返回 svg
- 2025-09-22 面板参数更新问题 && 移除无用纸张方向 && 调整打印方向问题(浏览器打印弹窗 布局:纵向,横向)
- 2025-09-22 编辑器快捷键处理(非编辑状态) & 撤销/重做
- 2025-09-15 可分页 shtml 插件支持整体节点过滤参数
- 2025-10-20 design、创建元素失败时友好错误提示
- 2025-10-20 设计器样式问题【编辑器插件(plugin-view-code-edit)样式】(react 中可能存在的样式冲突)
- 2025-10-29 plugin-api-pdf 插件同步调用方式
toPdf(printData,{ name:'pdf名称' }) - 2025-12-08
${field}取值支持嵌套路径:a.b.c或list[0].a形式 - 2025-12-08 面板页码格式功能: 支持双击编辑默认 & 更新回显
- 2025-12-08 插件注册功能: 可全局注册插件,局部更新插件
- 2025-12-08 providerMap 多次渲染的情况(template,printData,providers,providerMap,tags 支持自适应更新)
- 2026-01-07 字段名针对包含中文 "xx.xx" 字段名的支持(也可使用自定义字段名值获取)
- 2026-01-25 getHtml,print,print2 支持小模板填充对应纸张 & 支持 paperStyle 样式
- 2026-01-25 print2 没有传 pageSize 时自动处理默认纸张大小
- 2026-01-25 格式化函数,样式函数回调新增 rootData 以适配面板字段名功能,其他函数可使用
hinnn._rootData - 2026-01-25 模板对象 buildPagination 方法支持默认选中
- 2026-02-07 浏览器打印在线字体加载问题
- 2026-02-07 添加内置系统字体选项(根据不同平台)
- 2026-02-07 print2 默认的 pageSize 适配排列填充纸张的宽高
- 2026-04-14 设计器+弹窗设计器时,拖入元素 bug
- 2026-04-14 防止重复插入 printStyle
- 2026-04-14 hiprint.print 支持打印回调参数
- 2026-04-14 printByHtml API 支持打印回调参数
- 2026-04-14 plugin-text-auto 支持 overFontSize 参数 是否允许超过当前元素字体大小设置,默认 true
- 2026-04-27 shtml 元素支持渲染前处理函数 用于部分 html 特殊处理
- 2026-04-27 table 元素新增强制分页,显示规则,隐藏规则参数
🐛 Bug 修复(踩过的坑)
表格相关
| 版本 | 问题 |
|---|---|
| 2025-07-22 | 行列合并函数跨页首行 colspan 列数显示问题 |
| 2025-07-25 | customDataFun 导致表格无法拖拽 |
| 2025-08-28 | 表格在一些特殊场景下(页眉线之上,页脚线之下,每一页高度都不够的情况)卡死的问题 |
| 2025-09-22 | 表格头上下合并表体赋值问题 |
| 2025-09-25 | 表格行高度计算问题 |
| 2025-10-20 | 手动输入页眉/脚时值未更新问题 |
| 2025-12-08 | 表格头上下合并表体赋值问题 |
| 2026-04-14 | 表格 options 未指定高度显示问题 |
| 2026-04-30 | 表格在页脚线之下设计时未显示 |
缩放 & 拖拽
| 版本 | 问题 |
|---|---|
| 2025-07-11 | setConfig 方法可能导致 tab 显示错误问题 |
| 2025-08-13 | 使用插槽自定义 Header 无法拖拽问题 |
| 2025-08-13 | 移动端布局切换到 PC 端时元素选中事件丢失问题 |
| 2025-09-22 | 缩放时元素位置偏移 |
| 2025-10-20 | 缩放时模板 json 保存问题 |
| 2025-10-28 | designer 新增 props 未生效 bug |
| 2025-11-12 | 多面板导入时拖拽元素出现重复 bug |
| 2025-11-12 | 移动端点击拖拽元素失效问题 |
| 2026-04-14 | 缩放时拖拽调整元素大小 bug |
| 2026-04-14 | 预览组件 show 方法传递 onProgress bug |
| 2026-04-14 | plugin-text-auto 参数多次渲染 bug |
其他
| 版本 | 问题 |
|---|---|
| 2025-07-25 | 元素参数默认值设置失效问题 |
| 2025-09-25 | 拖拽页眉/尾线,页码模板 json 未更新问题 |
| 2025-10-20 | toImage limit:1 黑屏异常问题 |
| 2025-10-29 | e2table 插件(excel转html) wps 复制的内容无法导出 pdf,图片文本 |
| 2025-12-08 | react 包 ts 类型定义问题 |
| 2025-12-21 | formatter 插件参数重复问题 |
| 2026-01-07 | setHost API 异常问题 |
| 2026-04-27 | 子模板插件元素导致面板水印问题 |
| 2026-04-27 | update 更新模板时面板小于当前模板时问题 |
| 2026-04-27 | 部分元素函数 paperNo 回调无值的情况 |
| 2026-04-27 | 排列填充纸张纸张高度<=小模板时卡死问题 |
| 2026-04-27 | 框选移动,缩放,多面板操作历史记录问题 |
| 2026-04-30 | 按住 delete 点击元素辅助线未删除 bug |
📦 版本一览
| 时间 | 版本 | 重点 |
|---|---|---|
| 2025-07-11 | sv-print@0.1.25 | 触摸事件、移动端适配、对齐纸张、tid 添加元素、providerMap 渲染 |
| 2025-07-22 | sv-print@0.1.28 | 多字段名、自定义字段名值获取 |
| 2025-07-25 | sv-print@0.1.29 | i18n 多语言插件 |
| 2025-07-29 | sv-print@0.1.30 | i18n 适配增强、移动端 toolbar |
| 2025-08-01 | 客户端@2.0.3 | MQTT、预览、模板中心 |
| 2025-08-06 | sv-print@0.1.31 | 对齐工具增强、网格对齐 |
| 2025-08-07 | plugin-text-auto@0.1.0 | 文本字体自适应 |
| 2025-08-12 | 客户端@2.0.4 | 应用内更新、capture |
| 2025-08-20 | sv-print@0.1.33 | 表格动态列、粘贴模板、goBack API |
| 2025-08-21 | plugin-ele-shtml@0.1.0 | 可分页 shtml 插件 |
| 2025-08-28 | sv-print@0.1.34 | 格式化插件、Header 参数、性能优化 |
| 2025-09-15 | sv-print@0.2.0 | 大版本:Preview、DragBox、插件架构重构 |
| 2025-09-22 | sv-print@0.2.3 | 条码增强、编辑器优化、i18n 增强 |
| 2025-09-25 | hiprint@0.3.4 | 页眉/尾线可视化 |
| 2025-10-20 | sv-print@0.2.8 | 表格行高、面板扩展样式、创建元素友好提示 |
| 2025-10-27 | sv-print@0.2.9 | 面板旋转角度 |
| 2025-10-29 | 插件更新 | PDF/图片插件适配排列填充 |
| 2025-11-12 | sv-print@0.2.11 | headerMenuList 自定义、designerUtils 增强 |
| 2025-12-08 | sv-print@0.2.12 | 嵌套路径取值、插件注册、页码格式 |
| 2025-12-21 | 插件更新 | w2html 插件、shtml 增强、formatter 修复 |
| 2025-12-24 | 插件更新 | snapdom 导出质量提升 |
| 2026-01-07 | hiprint@0.3.15 | 中文字段名支持 |
| 2026-01-13 | sv-print@0.2.13 | 面板字段名批量渲染 |
| 2026-01-25 | sv-print@0.2.15 | 自定义主题、paperStyle、buildPagination 默认选中 |
| 2026-02-07 | hiprint@0.3.20 | 排列填充纸张增强、statusCallback |
| 2026-02-25 | sv-print@0.2.16 | adaptToSize 缩放适应 |
| 2026-03-12 | hiprint@0.3.22 | 表格格式化返回数组、动态列函数 |
| 2026-04-14 | sv-print@0.2.17 | 子模板插件、隐藏规则、打印回调 |
| 2026-04-27 | sv-print@0.2.18 | 多面板性能优化、table 强制分页/显示规则 |
| 2026-04-30 | hiprint@0.3.26 | 行分页方式 |
写到最后
这一年的更新量...说实话整理完我自己都惊了 😂
sv-print 从 0.1.x 一路迭代到 0.2.x,架构越来越清晰,插件化越来越完善。如果你还在用老版本,真的建议升一波~
有问题评论区见,解决不了算我输!🎯
整理时间:2026-05-18 覆盖版本:2025-07-11 ~ 2026-04-30(约 30 个版本) 原始更新日志:sv-print 更新日志