
本文以制造业和物流场景中常见的标签打印需求为背景,构建一条从模板设计、数据库连接到命令行批处理、Integration Builder事件触发、最终到REST API编程调用的完整自动化管线。每条方案均给出具体操作步骤和代码示例,适合需要将BarTender标签打印能力嵌入已有业务系统的开发者和运维人员。
仓库每天出库数百件商品,每件需要打印含品名、批次号、生产日期的条码标签。操作员打开BarTender,手动修改文本、点打印,重复数百次——出错率高、效率低、无法追溯。
自动化解决的核心思路只有一条:将打印动作从"人点鼠标"改为"系统触发"。BarTender提供了三层自动化能力,按集成深度递增:
.btw模板以下按层递进展开,每层均可独立使用。
任何自动化方案的前提是模板本身已经参数化。以下以产品出库标签为例。
打开BarTender,新建空白模板。在文件 → 页面设置中将尺寸设为100mm × 70mm(匹配标准热敏标签纸),方向为纵向。
在模板上放置以下对象:
数据库字段时钟,格式yyyy-MM-dd HH:mm:ss点击文件 → 数据库设置 → 添加,选择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中所有记录:
"C:\Program Files\Seagull\BarTender 2022\bartend.exe" /F="D:\Labels\ProductLabel.btw" /P /X如果需要从外部系统动态传入参数而非依赖Excel,可以结合命名数据源。在模板中定义命名数据源ProductName、BatchNo、ProdDate,运行时通过/DS参数传入:
"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任务计划程序即可实现定时批量打印。对于无编码能力的运维场景,命令行是最低成本的自动化入口。
适用BarTender Automation版及以上。当打印触发条件复杂、需要多步骤编排时使用。
打开BarTender Administration Console,进入集成 → 新建集成,选择"文件检测"触发器。
配置如下:
D:\PrintQueue\*.csv在"操作"中添加"打印文档",指向已创建的ProductLabel.btw模板。数据源自动匹配触发文件中的CSV数据。
如果数据源是SQL Server,选择"数据库监视"触发器。配置连接字符串后,BarTender会以指定间隔轮询表的变化。当检测到新记录时自动打印。
关键配置项:
5000ms(5秒),过短会增加数据库负载IsPrinted布尔列,打印后将标记更新为true,避免重复打印Integration Builder的优势是不写代码就能处理中等复杂的触发逻辑,适合"一个文件夹管一个品类"的产线场景。但其定制能力有限——如果你想在收到ERP的HTTP请求时动态生成标签内容,就需要进入第三层。
适用BarTender 2022及以上版本Automation / Enterprise版。REST API通过http://localhost:5159端口通信,支持JSON和BTXML格式。
在Windows服务列表中确认BarTender Integration Service和BarTender Print Scheduler Service均为"正在运行"状态。如果API返回503或连接被拒绝,先重启这两个服务。
以下代码实现:接收一个产品信息的JSON对象,驱动BarTender打印一张标签。使用requests库。
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}")部分旧版集成习惯使用XML。转换为BTXML(BarTender XML Script)格式,Content-Type设为application/xml,POST到同一端点。数据载荷结构如下:
<XMLScript Version="2.0"><Command><Print><Format> —— D:\Labels\ProductLabel.btw<NamedSubStrings><SubString><Name>ProductName</Name><Value>螺栓M16×50</Value></SubString><SubString><Name>BatchNo</Name><Value>B20260110</Value></SubString><SubString><Name>ProdDate</Name><Value>2026-01-10</Value></SubString><Printer> —— TSC TE200BTXML请求的Content-Type设为application/xml,POST到同一端点。
REST API方案适用于:MES系统完成质检后自动打印合格标签、WMS系统出货扫描后打印箱唛、电商ERP订单审核通过后打印快递面单。将上述Python代码封装为函数,嵌入业务逻辑的任意节点即可。
模板路径一致性。模板文件建议放在网络共享目录,确保BarTender所在服务器和开发机引用同一路径。使用绝对路径而非相对路径。
打印端口占用。REST API默认端口5159。如果服务器同时运行多套集成,可在BarTender Administration Console中修改端口。调用方务必记录新端口号。
错误重试机制。打印机缺纸、网络波动等瞬时故障会导致打印失败。建议在调用代码中实现指数退避重试:
权限隔离。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版中可用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。