java使用Bartender模板btw格式打印预览和打印SDK
- 支持模板转图像
- 支持自定义纸张大小
- 支持局域网打印机打印
- 支持模板数据源模式
- 支持模板数据命名字段模式
- 支持模板数据命名字段列表获取
- 支持获取可用打印机列表
- 支持份数和序数设置
- 支持模板图像控件动态填充 v2.0
maven引入
<dependency>
<groupId>cn.databytes.btw</groupId>
<artifactId>bartender-printer-sdk</artifactId>
<version>2.0</version>
</dependency>
解析btw模板效果如下
图片平台提示违规,不知道哪里不对,自己脑补吧!
SDK代码用例
// Author Jared.Yan<yanhuaiwen@163.com>
static Map<String, String> namedData = new HashMap<>();
// 测试数据
static {
String rand = UUID.randomUUID().toString().replace("-", "");
namedData.put("SN", "" + rand.substring(0, 13));
namedData.put("MPN", rand.substring(13, 26));
namedData.put("数量", "40");
}
/**
* 获取打印机列表
*/
public void fetchPrinterList() {
List<String> printerList = IBarTenderPrintService.fetchPrinterList();
System.out.println("printerList = " + printerList);
}
/**
* 使用指定字符串字段
*/
public void useNamedStringField() {
// 是否显示客户端
boolean showClient = false;
// 指定使用的打印机
String targetPrinter = "Label X9608/600s";
try (IBarTenderPrintService printService = new BarTenderPrintService(showClient)) {
// 打开btw格式模板
ITemplate template = printService.openTemplate("测试模板.btw", targetPrinter);
// 设置使用数据模式
template.setUseDatabase(false)
.setUseInputDataFile(false)
// 设置模板命名字段数据
.setData(namedData);
// 打印纸张配置
IPageSetup pageSetup = template.getPageSetup();
// 设置纸张大小 单位:Millimeters
pageSetup.setPaperSize(100, 50);
// 打印参数配置
IPrintSetup printSetup = template.getPrintSetup();
// 设置打印份数
printSetup.setIdenticalCopiesOfLabel(1);
// 打印输出
int i = template.printOut();
System.out.println("i = " + i);
// 打印成功
} catch (Exception e) {
// 打印失败
e.printStackTrace();
}
}
/**
* 使用输入数据文件
*/
public void useInputDataFile() {
try (IBarTenderPrintService printService = new BarTenderPrintService(false)) {
// 打开btw格式模板
ITemplate template = printService.openTemplate("测试模板.btw");
// 设置使用数据模式
template.setUseDatabase(true);
template.setUseInputDataFile(true);
// 设置数据文件
IInputDataFile inputDataFile = template.getInputDataFile();
/*
print_data.txt格式
id;name;sn;pn
1;测试;123;999
2;测试;123;999
3;测试;123;999
*/
inputDataFile
.setFileName("print_data.txt")
.setFieldDelimiter(";")
.setUseFieldNamesFromFirstRecord(true);
// 打印纸张配置
IPageSetup pageSetup = template.getPageSetup();
// 设置纸张大小 单位:inches
pageSetup.setPaperSize(100 / 25.4F, 50 / 25.4F);
// 打印参数配置
IPrintSetup printSetup = template.getPrintSetup();
// 设置打印份数
printSetup.setIdenticalCopiesOfLabel(1);
// 打印输出
int i = template.printOut();
System.out.println("i = " + i);
// 打印成功
} catch (Exception e) {
// 打印失败
e.printStackTrace();
}
}
/**
* 模板转图像文件
*/
public void templateToImageFile() {
try (IBarTenderPrintService printService = new BarTenderPrintService(false)) {
// 打开btw格式模板
ITemplate template = printService.openTemplate("测试模板.btw");
// 设置使用数据模式
template.setUseDatabase(true);
template.setUseInputDataFile(true);
// 设置数据文件
template.getInputDataFile()
.setUseFieldNamesFromFirstRecord(true)
.setFileName("print_data.txt")
.setFieldDelimiter(";");
// 导出图像到文件
String filename = template.exportToImage("图像保持地址.png");
System.out.println("filename = " + filename);
// 打印成功
} catch (Exception e) {
// 打印失败
e.printStackTrace();
}
}
/**
* 模板转图像流
*/
public void templateToImageStream() {
try (IBarTenderPrintService printService = new BarTenderPrintService(false)) {
// 打开btw格式模板
ITemplate template = printService.openTemplate("测试模板.btw");
// 设置使用数据模式
template.setUseDatabase(true);
template.setUseInputDataFile(true);
// 设置数据文件
IInputDataFile inputDataFile = template.getInputDataFile();
inputDataFile.setFileName("print_data.txt");
inputDataFile.setFieldDelimiter(";");
// 导出图像
try (ByteArrayOutputStream out = template.exportToImageOutputStream()) {
// implements...
} catch (IOException e) {
e.printStackTrace();
}
// 打印成功
} catch (Exception e) {
// 打印失败
e.printStackTrace();
}
}
/**
* 填充模板图像路径 v2.0
*/
public void FillTemplateImagePath() {
try (IBarTenderPrintService printService = new BarTenderPrintService(false)) {
ITemplate template = printService.openTemplate("动态图像.btw");
String tempPictureFile = "test.png";
// 获取模板设计对象
IObjects objects = template.getObjects();
// 获取指定图片控件
// IDesignObjects pictureControl = objects.getItem(1);
IDesignObjects pictureControl = objects.getFind("Picture 1");
pictureControl.setPicturePath(tempPictureFile);
// 获取所有控件
List<IDesignObjects> controlItems = objects.getItems();
for (IDesignObjects controlItem : controlItems) {
// 是图像控件
if (controlItem.getType() == ObjectType.Picture) {
IDesignObjects picture = objects.getFind(controlItem.getName());
picture.setPicturePath(tempPictureFile);
}
}
// 打印成功
} catch (Exception e) {
// 打印失败
e.printStackTrace();
}
}
qq技术6群(新):639967164 进行技术交流