如何将 gif 图像调整到 zpl/epl 打印机

问题描述 投票:0回答:2

当我指定“货到付款”选项时,UPS Web 服务返回 gif 图像而不是 epl/zpl 文件。所以现在我有一个问题,如何以编程方式调整这个 gif 图像,以便它可以在斑马打印机上打印。 这是我得到的图像: enter image description here

不幸的是,我没有 Zebra 打印机来测试我的尝试,但我发现我可以在 Zebra Designer 中看到打印预览,因此这是打印机上此图像的预览(旋转后): enter image description here

我的问题是如何以编程方式(或其他方式)调整此图像,以便可以在斑马打印机上正确打印

image printing gif zpl epl
2个回答
0
投票

您首先必须将图像转换为与 ZPL 兼容的格式,然后通过 ZPL 将该图像上传到打印机。您需要确保您的打印机有足够的内存来保存图像。

我们在 RocketShipIt 打印服务器中使用此方法来满足您的确切需求。 UPS COD 标签目前不支持 ZPL,我们需要为客户提供解决方法。

https://docs.rocketship.it/php/1-0/Thermal-printing.html#sending-gif-jpeg-png-images-to-Thermal-Printer

具体来说,我们使用 ^GW EPL2 命令:

https://support.zebra.com/cpws/docs/eltron/gw_command.htm


0
投票

试试这个: 您必须创建唯一将 PDF 转换为 ZPL 的方法。 此外,converGifToPngAndProcess 对图像执行 90 度旋转。

    public static ByteArrayOutputStream convertGifToPngAndProcess() throws IOException {
    BufferedImage gifImage = ImageIO.read(new ByteArrayInputStream(Base64.getDecoder()
            .decode(GIF_BASE_64)));
    int width = gifImage.getWidth();
    int height = gifImage.getHeight();
    BufferedImage rotatedImage = new BufferedImage(height, width, gifImage.getType());
    java.awt.geom.AffineTransform transform = new java.awt.geom.AffineTransform();
    transform.translate(height / 2.0, width / 2.0);
    transform.rotate(Math.toRadians(90));
    transform.translate(-width / 2.0, -height / 2.0);
    AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
    rotatedImage = op.filter(gifImage, rotatedImage);
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    ImageIO.write(rotatedImage, "png", outputStream);
    return outputStream;
}

public static void main(String[] args) throws BadElementException, IOException {
    Image img = Image.getInstance(convertGifToPngAndProcess().toByteArray());
    img.setRotation(180);
    img.scaleToFit(PageSize.A6);
    img.scaleAbsolute(PageSize.A6);
    Document document = new Document(PageSize.A6);
    document.setMargins(0, 0, 0, 0);
    try {
        PdfWriter.getInstance(document, new FileOutputStream(PDF_DESTINATION));
        document.open();
        document.add(img);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        document.close();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.