当我指定“货到付款”选项时,UPS Web 服务返回 gif 图像而不是 epl/zpl 文件。所以现在我有一个问题,如何以编程方式调整这个 gif 图像,以便它可以在斑马打印机上打印。 这是我得到的图像:
不幸的是,我没有 Zebra 打印机来测试我的尝试,但我发现我可以在 Zebra Designer 中看到打印预览,因此这是打印机上此图像的预览(旋转后):
我的问题是如何以编程方式(或其他方式)调整此图像,以便可以在斑马打印机上正确打印
您首先必须将图像转换为与 ZPL 兼容的格式,然后通过 ZPL 将该图像上传到打印机。您需要确保您的打印机有足够的内存来保存图像。
我们在 RocketShipIt 打印服务器中使用此方法来满足您的确切需求。 UPS COD 标签目前不支持 ZPL,我们需要为客户提供解决方法。
具体来说,我们使用 ^GW EPL2 命令:
试试这个: 您必须创建唯一将 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();
}
}