使用zpl命令使用zebra打印机进行图像打印

时间:2016-05-25 10:33:29

标签: java java-ee zebra-printers zpl zpl-ii

我正在尝试使用zpl语言在斑马打印机(LP-2844-Z)上打印图像。在ZPL文档中,它说你必须将图像转换为ASCII HexaDecimal。然后使用GF命令可以打印图像。 我尝试下面的代码来获取图像并将其转换为十六进制

URL oracle = new URL(urlString);
URLConnection yc = oracle.openConnection();
InputStream inputStream = yc.getInputStream();
byte[] imageData = IOUtils.toByteArray(inputStream);
System.out.println(Hex.encodeHex(pixel, false));

然后我尝试使用斑马打印机打印此数据,但打印的图像不正确。我尝试了另一个代码来获取图像字节并将其转换为十六进制

{{1}}

仍然无法打印正确的图像。我按照以下网址(http://labelary.com/viewer.html)尝试在上传图片时查看代码。我发现上传图片后,斑马查看器生成的base64完全不同于我使用上面的代码生成的。我在stackoverflow上经历了几篇文章,但我仍然无法解决这个问题。

我知道我在哪里做错了但我不知道如何解决它。实际上我无法为给定的图像生成ASCII Hex Base64代码。这是我的想法。

任何帮助都是适当的。

谢谢,

1 个答案:

答案 0 :(得分:0)

尝试使用此功能:

private static String zplEncode(String graphicFileLocation) {
    Path imagePath = Paths.get(URI.create("file://" + graphicFileLocation));
    String returnResults = "";
    try {
    byte[] binaryData = Files.readAllBytes(imagePath);
    for (byte b : binaryData)
    {
        String hexRep = String.format("{0:X}", b);
        if (hexRep.length() == 1)
            hexRep = "0" + hexRep;
        returnResults += hexRep;
      }
    } catch (IOException ex) {
        // Do something here
    }
    return returnResults;
}

我的基础是this answer from 2012