java使用Bartender模板btw格式打印预览和打印SDK

java使用Bartender模板btw格式打印预览和打印SDK

下载 bartender-printer-sdk.jar

  • 支持模板转图像
  • 支持自定义纸张大小
  • 支持局域网打印机打印
  • 支持模板数据源模式
  • 支持模板数据命名字段模式
  • 支持模板数据命名字段列表获取
  • 支持获取可用打印机列表
  • 支持份数和序数设置
  • 支持模板图像控件动态填充 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 进行技术交流

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值