手把手教你在 iVX 中集成 PeachPrinter,实现企业单据套打
在企业日常运营中,单据套打(如订单、发票、出库单等)是高频需求,PeachPrinter 作为轻量高效的打印工具,支持自定义模板设计与跨设备打印,结合 iVX 低代码平台的快速开发能力,可快速实现企业级单据套打功能。以下是详细的集成步骤,零基础也能轻松上手。
一、前置准备
-
核心工具:PeachPrinter 客户端程序、PeachPrinter JS 依赖文件(peach-jprinter-min.js)
-
基础条件:已注册并登录的 iVX 账号、本地设备已安装 PeachPrinter 客户端(启动后默认监听 9623 端口,无需手动配置)
-
资源获取:从 PeachPrinter 官方渠道(Gitee 仓库 / 官网)下载客户端安装包及 JS 依赖文件,确保资源完整性
二、详细操作步骤
步骤 1:准备 PeachPrinter 相关资源
1.1 安装并启动 PeachPrinter 客户端
-
下载与本地设备适配的 PeachPrinter 客户端(Windows/Mac/Linux 版本均支持),按照引导完成安装
-
安装完成后启动客户端,启动成功后会默认监听本地 9623 端口,用于接收打印请求(端口占用时可在客户端设置中修改)
1.2 设计并导出单据打印模板
PeachPrinter 提供可视化模板设计器,支持 Excel 风格的灵活布局,操作如下:
-
设计器采用单元格合并、属性配置(字体、对齐方式、边框等)的方式,搭建单据结构(如抬头、表体、签字区等)
-
设计完成后,点击设计器顶部的「模板代码」按钮,复制生成的模板 JSON 字符串(含布局、样式配置),单独保存备用(后续用于绑定动态数据);也可点击「保存模板」,后续可重新编辑
步骤 2:搭建 iVX 基础项目页面
登录 iVX 在线编辑器,快速搭建用于单据录入、预览、打印的页面:
-
新建 Web 项目(选择 “空白项目” 或 “自定义项目” 均可)
-
在前台页面添加核心组件,按需配置:
-
功能按钮:命名为「printBtn」,用于触发打印操作
-
数据录入组件:输入框(客户名称、订单号)、数字输入框(订单金额)、日期选择器(打印日期)等,绑定单据动态字段
-
预览组件(可选):添加面板组件,命名为「billPreview」,用于实时展示单据数据,方便测试时核对
- 调整组件位置与样式,确保页面布局清晰、操作流程顺畅(如录入区在上、预览区在中、打印按钮在下)
步骤 3:在 iVX 中引入 PeachPrinter 的 JS 文件
通过自定义函数动态引入外部 JS 依赖,确保打印接口可调用:
3.1 创建「加载 JS 文件」自定义函数
-
在 iVX 编辑器右侧「逻辑工具栏」中,点击「添加函数组件」,命名为
loadPeachPrinterJS(便于识别功能) -
编辑函数,粘贴以下代码(动态创建 script 标签,引入 PeachPrinter JS 文件):
// 创建 script 标签,用于加载外部 JS 依赖
const script = document.createElement('script');
// 配置 JS 文件路径:若已上传至 iVX 项目资源库,填相对路径;若用在线链接,直接填官方下载地址
script.src = "https://gitee.com/ctxb2004/peach-printer3.0/releases/download/printer-v3.1.0/peach-jprinter-min.js";
script.type = "text/javascript";
// 监听 JS 加载完成事件,确保后续接口可用
script.onload = () => {
console.log("PeachPrinter JS 文件加载成功");
};
// 加载失败时提示
script.onerror = () => {
console.error("PeachPrinter JS 文件加载失败,请检查路径是否正确");
};
// 将 script 标签插入页面 head 节点,完成加载
document.head.appendChild(script);
// 返回加载状态
return { status: "success", msg: "JS 文件开始加载" };
3.2 绑定页面初始化事件
确保 JS 文件在页面加载时自动加载,避免调用打印接口时依赖未就绪:
-
选中 iVX 页面(点击页面空白区域),在右侧「事件面板」中添加「页面加载完成」事件
-
事件配置:选择「同步调用」→ 选中
loadPeachPrinterJS函数,无需传参,保存配置
步骤 4:编写打印核心函数(绑定模板与动态数据)
创建 printBill 函数,实现 “模板 + 动态数据” 拼接,并调用 PeachPrinter 打印接口:
4.1 创建打印函数并配置参数
-
新增自定义函数组件,命名为
printBill -
配置函数参数(对应单据动态字段,与页面录入组件一一对应):
-
customerName:客户名称(字符串类型) -
orderAmount:订单金额(数字类型) -
orderNo:订单号(字符串类型) -
printTime:打印时间(字符串类型) -
可根据实际单据需求,添加更多参数(如商品名称、数量、备注等)
4.2 编写函数核心代码
函数体内完成模板替换、数据绑定、调用打印接口,完整代码如下(替换模板 JSON 为实际导出内容):
// 接收函数参数(页面录入的动态数据)
const { customerName, orderAmount, orderNo, printTime } = arguments\[0];
// 授权信息(免费版无需填写,保持空对象即可;商业版需填写官方提供的 licence 信息)
const licence = {
code: "",
name: "",
};
// 单据模板 JSON(替换为步骤 1.2 中导出的模板代码,确保格式正确)
const billTemplate = {
// 此处粘贴实际导出的模板 JSON 字符串,示例格式如下(需替换为自己的模板):
// "width":80,"height":100,"rows":10,"cols":20,"cells":\[...]
};
// 主表动态数据(与模板中的字段名对应,字段名需和模板设计时一致)
const mainData = {
customerName: customerName, // 客户名称
orderAmount: orderAmount.toFixed(2), // 订单金额(保留 2 位小数)
orderNo: orderNo, // 订单号
printTime: printTime, // 打印时间
// 若模板中有其他动态字段,需在此补充
};
// 子表数据(如订单明细、商品列表等,无则留空数组)
const listData = \[];
// 校验 PeachPrinter 是否加载成功
if (window.PeachPrinter) {
try {
// 调用 PeachPrinter 静默打印接口(无需预览,直接发送打印请求)
PeachPrinter.print(billTemplate, mainData, listData, licence, (result) => {
if (result.code=='1') {
console.log("打印请求发送成功", result);
alert("打印请求已发送,请检查打印机状态");
} else {
console.error("打印失败", result.msg);
alert("打印失败:" + result.msg);
}
});
} catch (error) {
console.error("打印接口调用异常", error);
alert("打印功能异常,请检查客户端是否已启动");
}
} else {
alert("PeachPrinter 未加载完成,请刷新页面重试");
}
步骤 5:绑定按钮点击事件,触发打印
将打印函数与页面按钮关联,实现 “录入数据 → 点击打印” 的流程:
-
选中页面中的「printBtn」按钮,在右侧「事件面板」中添加「点击」事件
-
事件配置:选择「同步调用」→ 选中
printBill函数 -
给函数参数赋值(绑定页面录入组件的数值):
-
customerName:绑定输入框(客户名称)的「value」属性 -
orderAmount:绑定数字输入框(订单金额)的「value」属性 -
orderNo:绑定输入框(订单号)的「value」属性 -
printTime:绑定日期选择器的「value」属性(或直接填写new Date().toLocaleString()获取当前时间)
- 保存事件配置,完成绑定
步骤 6:测试与调试套打功能
确保所有配置生效,排查可能的问题:
6.1 基础测试流程
-
确认本地 PeachPrinter 客户端已启动(任务栏 / 托盘可见图标)
-
点击 iVX 编辑器顶部的「预览」按钮,进入项目预览页面
-
填写测试数据(如客户名称 “XX 科技有限公司”、订单金额 “5800.00”、订单号 “ORD20240520001”)
-
点击「打印」按钮,查看打印结果:
-
若打印机正常连接,会直接输出单据
-
若未打印,检查客户端是否启动、端口是否占用、模板 JSON 格式是否正确
6.2 预览功能调试(可选)
若需先预览单据格式,再执行打印,可将打印接口替换为预览接口:
// 替换 print 接口为 preview 接口,弹出预览窗口
PeachPrinter.preview(billTemplate, mainData, listData);
预览确认格式无误后,再改回 print 接口实现直接打印。
三、注意事项
-
端口占用问题:PeachPrinter 默认使用 9623 端口,若提示 “端口被占用”,可在客户端「设置」中修改端口,并同步更新 JS 中的连接配置
-
JS 文件路径:若使用本地 JS 文件,需先上传至 iVX 项目「资源库」,再填写相对路径(如
./peach-jprinter-min.js),避免跨域或路径错误 -
模板格式校验:导出的模板 JSON 需完整粘贴,不可遗漏字段,否则会导致打印格式错乱
-
数据字段匹配:
mainData中的字段名需与模板设计时的 “字段标识” 完全一致(区分大小写),否则动态数据无法渲染 -
客户端状态:打印前需确保 PeachPrinter 客户端已启动,且打印机已正常连接(本地打印机 / 网络打印机均可)
通过以上步骤,即可在 iVX 项目中快速集成 PeachPrinter 套打功能,支持各类企业单据的自定义设计与高效打印,适配订单、发票、出库单等多种场景。