前端可视化打印设计器sv-print,一口气更新了30版

哈喽哇!我是小不不简说的不~

时隔快一年,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,标尺显示拖拽元素宽高
  • 历史记录拖拽盒子
  • 一键隐藏/显示所有拖拽盒子
  • 自定义新增面板参数 + newPanel hook
  • 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.clist[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 查看所有元素参数对象 & getOptionItem hook
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.clist[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 更新日志

相关推荐
颖火虫盟主4 小时前
Claude Code Hook 系统详解与 Hello World 实操
前端·网络·数据库
JavaGuide5 小时前
Claude Code + BrowserAct,夯爆了!一句话让 AI 帮你操控浏览器。
前端·后端·ai编程
七十二時_阿川5 小时前
Electron WebContents 完全指南:页面渲染、导航控制与安全实战
前端·electron
用户11481867894845 小时前
Vue 开发者快速上手 Flutter(五) -状态管理路径
前端
七十二時_阿川5 小时前
Electron 主进程和渲染进程如何通信?这篇讲清楚了
前端·electron
前端那点事5 小时前
Vue3+TS 封装高复用 ECharts 通用组件,自适应+防抖+主题切换,开箱即用
前端·vue.js
七十二時_阿川5 小时前
从零到精通:Electron 窗口管理高级技巧
前端·electron
前端那点事5 小时前
Vue3+TS动态路由终极方案|后端权限、刷新不丢、按钮权限、解决所有404BUG
前端·vue.js
前端那点事5 小时前
Vue3+TS手写不定高虚拟列表Hooks,彻底解决长列表卡顿,生产直接复用
前端·vue.js