Bartender无代码方式实现条码标签远程打印

分享 Bartender条码标签远程打印  收藏
13 / 621

作为工业界主流的标签软件,BarTender 具备非常强大的集成能力,可以实现与业务系统的原生集成,包括 Oracle 和 SAP 等领先的 ERP 和 WMS 系统,同时也支持通过 Web 服务等方式来实现与其它更多业务系统的集成。明道云应用也可以通过 API 来集成 BarTender 实现远程标签打印。

BarTender 的集成服务主要通过 Integration Builder 和 Administration Console 这两个工具实现,本文简单介绍下通过这两个工具创建、配置、部署和管理集成服务的具体步骤。

版本和安装要求

最早支持 Integration Builder 工具的版本应该是 BarTender 2016,本例是基于 BarTender 2022 R5(官网最新版)完成,建议尽量使用相对近一点的版本。BarTender 有四个版本,分别为入门版、专业版、自动化版和企业版,仅自动化版和企业版支持集成功能。

安装开始时需要按下图所示选择,确保安装 Web 服务相关的组件:

这里 BarTender 应该安装在车间或者仓库现场的 PC 上,该 PC 与现场标签打印机连接。

创建标签

在 BarTender Designer 中创建标签,使用“数据库”来定义数据源,数据库类型选择“文本文件”。

下图样本数据中,第一行为标题,第二行为标签数据。

样本数据:

ItemCode,ItemName,SN,DC,VendorCode

001090093,底板,B2023051108103,2322,V0045

检查字段类型是否正确,可以手工调整。

设计标签格式,并将标签字段与数据字段绑定。

创建集成服务

启动 Integration Builder 工具,创建集成服务,集成方式选择“Web 服务”。

设定集成服务名称。

设定 Web 服务端口。后续通过此处生成的“URL 路径”来接收 Web 服务请求。

指定输入数据格式为“BTXML 脚本”。

“响应”相关的属性默认即可。

添加“打印 BTXML 脚本”操作。

将脚本源变量设置为“%EventData%”

保存设置,生成的集成服务配置文件后缀为 btn,本例中要求将标签文件(.btw)与.btn 文件放置于同一个文件目录。

调试预览

将 Integration Builder 工具切换至“预览”页签,执行启动操作,开始调试。

生成标签预览图片

通过 Postman 工具发送标签预览请求,BarTender 服务将生成预览图片并返回预览图片的二进制数据。

部分属性说明:

Format:标签文件 btw 的文件路径,其中变量 %IntegrationFileFolder% 是指向集成服务 btn 文件所在目录;

Folder:预览图片文件生成后保存的目录;

FileNameTemplate:预览图片文件名;

请求数据:

<?xml version="1.0" encoding="utf-8"?>
<XMLScript Version="2.0" Name="09232006_103601_Job1" ID="123">
    <Command Name="Job1">
        <ExportPrintPreviewToImage ReturnImageInResponse="true">
            <Format>%IntegrationFileFolder%C001-BOX-Lable3.btw</Format>
            <Folder>%IntegrationFileFolder%</Folder>
            <FileNameTemplate>Preview_Label%PageNumber%.png</FileNameTemplate>
            <ImageFormatType>PNG</ImageFormatType>
            <Colors>btColors24Bit</Colors>
            <DPI>300</DPI>
            <Overwrite>true</Overwrite>
            <IncludeMargins>true</IncludeMargins>
            <IncludeBorder>true</IncludeBorder>
            <BackgroundColor>16777215</BackgroundColor>
            <PrintSetup>
                <IdenticalCopiesOfLabel>1</IdenticalCopiesOfLabel>
            </PrintSetup>
        </ExportPrintPreviewToImage>
    </Command>
</XMLScript>

返回数据:

<Response Version="2.0" Name="09232006_103601_Job1" ID="123" AppName="BarTender" AppVersion="2022 R5" AppVersionId="1130" AppVersionMajor="11" AppVersionMinor="30" AppVersionBuild="197999" AppInstancePid="28272" AppInstanceGuid="{590AD1C8-6DE8-4DFE-A510-F9F70ABC6BFA}">
    <User>DESKTOP-IIR74FO\SYSTEM</User>
    <Server>DESKTOP-IIR74FO</Server>
    <Command Name="Job1">
        <ExportPrintPreviewToImage>
            <ImageData Page="1" ImageFormatType="PNG">iVBORw0KGgoAAAANSUhEUgAACbAAAA20CAIAAACh3m5aAAAA
CXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5wYaAiIWJ5Pk
3gAAAAd0RVh0QXV0aG9yAKmuzEgAAAAMdEVYdERlc2NyaXB0
aW9uABMJISMAAAAKdEVYdENvcHlyaWdodACsD8w6AAAADnRF
WHRDcmVhdGlvbiB0aW1lADX3DwkAAAAJdEVYdFNvZnR3YXJl
.............此处省略1000行....................
AAAAAABkCaIAAAAAAABAliAKAAAAAAAAZAmiAAAAAAAAQJYg
CgAAAAAAAGQJogAAAAAAAECWIAoAAAAAAABkCaIAAAAAAABA
liAKAAAAAAAAZAmiAAAAAAAAQJYgCgAAAAAAAGT9BK+S3YEv
AWyBAAAAAElFTkSuQmCC</ImageData>
        </ExportPrintPreviewToImage>
    </Command>
</Response>

调试状态和结果:

打印标签

CDATA 即为需要打印的标签数据,同时可以指定标签格式文件(*.btw)、打印机和打印份数。

请求数据:

<?xml version="1.0" encoding="utf-8"?>
<XMLScript Version="2.0">
    <Command>
        <Print JobName="Job1">
            <Format>%IntegrationFileFolder%C001-BOX-Lable3.btw</Format>
            <PrintSetup>
                <IdenticalCopiesOfLabel>2</IdenticalCopiesOfLabel>
                <Printer>EPSON</Printer>
            </PrintSetup>
            <RecordSet Type="btTextFile">
                <TextData>
                    <![CDATA[ItemCode,ItemName,SN,DC,VendorCode
                            001090093,底板,B2023051108101,2322,V003
                            001090093,底板,B2023051108101,2322,V005]]>
                </TextData>
            </RecordSet>
        </Print>
    </Command>
</XMLScript>

返回数据:

<Response Version="2.0" AppName="BarTender" AppVersion="2022 R5" AppVersionId="1130" AppVersionMajor="11" AppVersionMinor="30" AppVersionBuild="197999" AppInstancePid="28272" AppInstanceGuid="{590AD1C8-6DE8-4DFE-A510-F9F70ABC6BFA}">
    <User>DESKTOP-IIR74FO\SYSTEM</User>
    <Server>DESKTOP-IIR74FO</Server>
    <Command>
        <Print ID="21" GUID="{D575E4D7-6624-40E0-ABD3-D5C2ADD5F10A}" JobLastStatus="Queued" JobCompleted="true" JobName="Job1">
            <JobStatus Completed="true">
                <TimeJobStart>2023-06-26T10:42:35.622</TimeJobStart>
                <TimeJobQueued>2023-06-26T10:42:36.102</TimeJobQueued>
                <TimeJobSent>2023-06-26T10:42:36.102</TimeJobSent>
                <LastStatus>Queued</LastStatus>
                <Description>打印作业正在等待被发送至打印机。</Description>
            </JobStatus>
            <Message Id="1750" Guid="{5ED9611D-0E82-4A89-A1F4-9ADD5BCD3186}" Severity="Information" Category="Printing" Response="OK">
                <Text>BarTender 已将打印作业成功发送到后台处理程序。


作业名称: Job1
文档: C001-BOX-Lable3.btw
打印机: EPSON</Text>
            </Message>
        </Print>
    </Command>
</Response>

部署

将 Integration Builder 工具切换至“部署”页签,执行部署操作,并选择部署在本机。

监控

启动 Administration Console 工具,在集成页面可以进行启动或停止集成服务的操作,

总结

可视化的配置界面,全过程 Codeless,可以完美配合明道云应用在工业领域的标签打印场景。

除了本例介绍的 BTXML 数据格式,还支持 JSON 数据格式的 Web 服务请求,但貌似每个请求仅支持打印一个标签(如一个包装标签、一个序列号),实际生产环境中更多的是需要多个标签批量的连续打印。建议先了解下 BarTender 中 BTXML、变量等基本概念,进而灵活运用集成工具,实现更复杂的标签打印功能。