摘要本文以制造业和物流场景中常见的标签打印需求为背景,构建一条从模板设计、数据库连接到命令行批处理、Integration Builder事件触发、最终到REST API编程调用的完整自动化管线。每条方案均给出具体操作步骤和代码示例,适合需要将BarTender标签打印能力嵌入已有业务系统的开发者和运维人员。
一、问题场景:为什么手工打印标签不可持续仓库每天出库数百件商品,每件需要打印含品名、批次号、生产日期的条码标签。操作员打开BarTender,手动修改文本、点打印,重复数百次——出错率高、效率低、无法追溯。
自动化解决的核心思路只有一条:将打印动作从"人点鼠标"改为"系统触发"。BarTender提供了三层自动化能力,按集成深度递增:
第一层:命令行参数调用已有的.btw模板第二层:Integration Builder基于文件/数据库事件自动触发第三层:REST API编程控制,嵌入业务代码以下按层递进展开,每层均可独立使用。
二、前置工作:设计一个数据驱动的标签模板任何自动化方案的前提是模板本身已经参数化。以下以产品出库标签为例。
2.1 创建模板打开BarTender,新建空白模板。在文件 → 页面设置中将尺寸设为100mm × 70mm(匹配标准热敏标签纸),方向为纵向。
在模板上放置以下对象:
文本对象"产品名称",数据源类型设为数据库字段文本对象"批次号",同上文本对象"生产日期",同上条码对象(Code128),数据源绑定到"批次号"字段文本对象"打印时间",数据源类型设为时钟,格式yyyy-MM-dd HH:mm:ss2.2 连接测试数据源点击文件 → 数据库设置 → 添加,选择Microsoft Excel,指向一个测试文件。文件内容示例:
产品名称
批次号
生产日期
螺栓M12×40
B20260101
2026-01-01
螺母M12
B20260102
2026-01-02
垫片12mm
B20260103
2026-01-03
连接成功后,在工具箱的"数据源"面板中展开"数据库字段",将三个字段分别拖放到对应文本对象上。使用记录导航栏翻页预览,确认数据正确填充。
将模板保存为D:\Labels\ProductLabel.btw。至此模板准备完成,以下进入自动化方案。
三、第一层:命令行批量打印适用于定时任务、脚本调度等场景,无需额外授权。
BarTender安装后自带命令行工具bartend.exe,路径通常为:
C:\Program Files\Seagull\BarTender 2022\bartend.exe
常用参数:
/F="模板路径" :指定模板文件/P :直接打印,不弹出对话框/X :打印完成后自动关闭BarTender/N="数据源路径" :运行时指定数据文件/C=数量 :打印份数示例:在CMD中执行以下命令,静默打印Excel中所有记录:
代码语言:bash复制"C:\Program Files\Seagull\BarTender 2022\bartend.exe" /F="D:\Labels\ProductLabel.btw" /P /X如果需要从外部系统动态传入参数而非依赖Excel,可以结合命名数据源。在模板中定义命名数据源ProductName、BatchNo、ProdDate,运行时通过/DS参数传入:
代码语言:bash复制"C:\Program Files\Seagull\BarTender 2022\bartend.exe" /F="D:\Labels\ProductLabel.btw" /P /X /DS="ProductName=螺栓M16×50" /DS="BatchNo=B20260110" /DS="ProdDate=2026-01-10"将此命令写入.bat文件,配合Windows任务计划程序即可实现定时批量打印。对于无编码能力的运维场景,命令行是最低成本的自动化入口。
四、第二层:Integration Builder事件驱动适用BarTender Automation版及以上。当打印触发条件复杂、需要多步骤编排时使用。
4.1 创建文件触发集成打开BarTender Administration Console,进入集成 → 新建集成,选择"文件检测"触发器。
配置如下:
监控文件夹:D:\PrintQueue\文件掩码:*.csv触发时机:文件创建时在"操作"中添加"打印文档",指向已创建的ProductLabel.btw模板。数据源自动匹配触发文件中的CSV数据。
4.2 数据库轮询触发如果数据源是SQL Server,选择"数据库监视"触发器。配置连接字符串后,BarTender会以指定间隔轮询表的变化。当检测到新记录时自动打印。
关键配置项:
轮询间隔:建议5000ms(5秒),过短会增加数据库负载标记字段:表中添加IsPrinted布尔列,打印后将标记更新为true,避免重复打印Integration Builder的优势是不写代码就能处理中等复杂的触发逻辑,适合"一个文件夹管一个品类"的产线场景。但其定制能力有限——如果你想在收到ERP的HTTP请求时动态生成标签内容,就需要进入第三层。
五、第三层:REST API编程集成适用BarTender 2022及以上版本Automation / Enterprise版。REST API通过http://localhost:5159端口通信,支持JSON和BTXML格式。
5.1 确认API服务运行在Windows服务列表中确认BarTender Integration Service和BarTender Print Scheduler Service均为"正在运行"状态。如果API返回503或连接被拒绝,先重启这两个服务。
5.2 Python调用示例以下代码实现:接收一个产品信息的JSON对象,驱动BarTender打印一张标签。使用requests库。
代码语言:python复制import requests
import json
url = "http://localhost:5159/api/v1/print"
payload = {
"document": "D:\\Labels\\ProductLabel.btw",
"namedDataSources": {
"ProductName": "螺栓M16×50",
"BatchNo": "B20260110",
"ProdDate": "2026-01-10"
},
"copies": 1,
"printer": "TSC TE200",
"closeAfterPrint": True
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers, timeout=30)
if response.status_code == 200:
result = response.json()
print(f"打印成功,任务ID: {result.get('id')}")
else:
print(f"打印失败: {response.status_code} - {response.text}")5.3 BTXML格式调用部分旧版集成习惯使用XML。转换为BTXML(BarTender XML Script)格式,Content-Type设为application/xml,POST到同一端点。数据载荷结构如下:
REST API方案适用于:MES系统完成质检后自动打印合格标签、WMS系统出货扫描后打印箱唛、电商ERP订单审核通过后打印快递面单。将上述Python代码封装为函数,嵌入业务逻辑的任意节点即可。
六、生产环境注意事项模板路径一致性。模板文件建议放在网络共享目录,确保BarTender所在服务器和开发机引用同一路径。使用绝对路径而非相对路径。
打印端口占用。REST API默认端口5159。如果服务器同时运行多套集成,可在BarTender Administration Console中修改端口。调用方务必记录新端口号。
错误重试机制。打印机缺纸、网络波动等瞬时故障会导致打印失败。建议在调用代码中实现指数退避重试:
首次失败等待2秒重试二次失败等待4秒三次失败后记录日志并告警权限隔离。REST API没有内置用户认证体系,生产环境建议将BarTender服务绑定到127.0.0.1,仅允许本机调用;外部系统通过中间API网关转发。
七、方案选择与总结需求场景
推荐方案
版本要求
定时批量打印Excel/CSV数据
命令行 + 任务计划程序
基础版即可
监听文件夹/数据库变化自动打印
Integration Builder
Automation版
从ERP/MES/WMS系统中编程调用
REST API
2022+ Automation版
跨平台(Linux/Web调用)
REST API
2022+ Automation版
三种方案并非互斥。实际产线常见组合:用Integration Builder监听数据库新增记录,触发后通过BTXML调用同一模板打印,同时在Python代码中通过REST API处理来自Web端的实时打印请求。
软件方面,BarTender Automation版包含本文所述全部自动化功能,可在官方渠道申请试用评估。完整驱动和安装包可通过金山毒霸安全平台获取:BarTender下载。
从一张模板开始,逐步推进到REST API集成——自动化程度每提升一层,人工干预就减少一个数量级。
本文基于BarTender 2022 R8版本编写,命令行参数和REST API端点在不同版本间保持高度兼容。Integration Builder仅在Automation和Enterprise版中可用。