由于项目需要实现标签在线打印,标签的信息根据产品信息变化,打印机型号为TSC TTP-244_Pro,TSC官方提供了免费的barTender可供下载使用,所以决定使用barTender设置标签模板,数据源采用嵌入式数据。在打印时,Qt通过QAxObject的方式,调用barTender,实现具名数据源替换和打印。
1、首先需要在项目的pro文件中添加axcontainer,如QT += axcontainer;本人使用Qt5.12+VS2019。
2、安装barTender;安装成功后,如果默认安装在C盘,可以在C:\Program Files\Seagull\BarTender 2022\Help\ 目录下找到开发帮助文档Automation.chm
文档中有关于ActivX相关接口的说明,以及c#和VB的例子,可供参考。使用C++调用barTarder接口就是参考的这个帮助文档。
3、使用barTender创建一个指定了打印机的模板,并给数据设置数据源名称。然后保存为btw格式。
4、bartender.h
#ifndef BARTENDER_H
#define BARTENDER_H
#include <QObject>
#include <QAxObject>
class BarTender : public QObject
{
Q_OBJECT
public:
explicit BarTender(QObject *parent = nullptr);
~BarTender();
//打开btw文件
bool OpenFliePath(const QString &path);
//当打开多个文件时,激活其中某个文件
void Activate(const QString path);
//关闭
void close(const QString path = "");
//获取打印机名(打印机名是从btw信息中获取的)
QString getPrinterName();
//设置打印机名
void setPrinterName(const QString &name);
//设置具名数据源的数据,name:数据源名称,value:值