使用zebra imz220打印png-android

使用zebra imz220打印png-android,android,bluetooth,zebra-printers,Android,Bluetooth,Zebra Printers,我在zebra imz220打印机上打印png资产时遇到了一个问题,它将用于打印android平板电脑的收据,并且需要在打印输出的顶部打印一个徽标。打印图像时,我得到的是字符串输出,而不是图像。我尝试了以下stackoverflow帖子,因为我似乎找不到任何关于如何操作的文档- 我用RW420斑马打印机打印以下代码 Connection connection = new BluetoothConnection("MAC_ADDRESS_HERE"); connection.open(); //

我在zebra imz220打印机上打印png资产时遇到了一个问题,它将用于打印android平板电脑的收据,并且需要在打印输出的顶部打印一个徽标。打印图像时,我得到的是字符串输出,而不是图像。我尝试了以下stackoverflow帖子,因为我似乎找不到任何关于如何操作的文档-


我用RW420斑马打印机打印以下代码

Connection connection = new BluetoothConnection("MAC_ADDRESS_HERE");
connection.open();

//reset margin
//ref https://km.zebra.com/kb/index?page=forums&topic=021407fb4efb3012e55595f77007e8a
connection.write("! U1 JOURNAL\r\n! U1 SETFF 100 2\r\n".getBytes());

Bitmap bitmapToPrint = /*GET_YOUR_BITMAP*/
ZebraPrinter printer = ZebraPrinterFactory.getInstance(connection);
ZebraImageAndroid zebraImageToPrint = new ZebraImageAndroid(bitmapToPrint);
printer.printImage(zebraImageToPrint, 0, 0, -1, -1, false);

检查您的打印方法,使用-1-1 to width and height参数来保存位图的原始宽度和高度

我正在RW420 Zebra打印机中使用以下代码打印

Connection connection = new BluetoothConnection("MAC_ADDRESS_HERE");
connection.open();

//reset margin
//ref https://km.zebra.com/kb/index?page=forums&topic=021407fb4efb3012e55595f77007e8a
connection.write("! U1 JOURNAL\r\n! U1 SETFF 100 2\r\n".getBytes());

Bitmap bitmapToPrint = /*GET_YOUR_BITMAP*/
ZebraPrinter printer = ZebraPrinterFactory.getInstance(connection);
ZebraImageAndroid zebraImageToPrint = new ZebraImageAndroid(bitmapToPrint);
printer.printImage(zebraImageToPrint, 0, 0, -1, -1, false);
检查打印方法,使用-1-1 to width and height参数来保持位图的原始宽度和高度

还有另一种方法:

  if(conZebra.isConnected()) {
    int widthOfImageInBytes = (bitmap.getWidth() + 7) / 8;
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    baos.write(("! 0 200 200 "
                + bitmap.getHeight()
                + " 1\r\nCG "
                + String.valueOf(widthOfImageInBytes)
                + String.valueOf(" ")
                + String.valueOf(bitmap.getHeight())
                + String.valueOf(" ")
                + String.valueOf(0)
                + String.valueOf(" ")
                + String.valueOf(0)
                + String.valueOf(" ")).getBytes());
    conZebra.write(baos.toByteArray());
    OutputStream compressedBitmapOutputStreamCpcl = new CompressedBitmapOutputStreamCpcl(conZebra);
    DitheredImageProvider.getDitheredImage(bitmap, compressedBitmapOutputStreamCpcl);
    compressedBitmapOutputStreamCpcl.close();
    conZebra.write("\r\nFORM\r\nPRINT\r\n".getBytes());
    //printer.getGraphicsUtil().printImage(bitmap, 0, 0, -1, -1, false);
    Utils.DebugLog(Utils.TAG_PRINTERMODULE, "Bitmap enviado...");
} else {
    Utils.DebugLog(Utils.TAG_PRINTERMODULE, "La impresora no est� conectada, imprimirBitmap() fall�");
}
还有另一种方法:

  if(conZebra.isConnected()) {
    int widthOfImageInBytes = (bitmap.getWidth() + 7) / 8;
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    baos.write(("! 0 200 200 "
                + bitmap.getHeight()
                + " 1\r\nCG "
                + String.valueOf(widthOfImageInBytes)
                + String.valueOf(" ")
                + String.valueOf(bitmap.getHeight())
                + String.valueOf(" ")
                + String.valueOf(0)
                + String.valueOf(" ")
                + String.valueOf(0)
                + String.valueOf(" ")).getBytes());
    conZebra.write(baos.toByteArray());
    OutputStream compressedBitmapOutputStreamCpcl = new CompressedBitmapOutputStreamCpcl(conZebra);
    DitheredImageProvider.getDitheredImage(bitmap, compressedBitmapOutputStreamCpcl);
    compressedBitmapOutputStreamCpcl.close();
    conZebra.write("\r\nFORM\r\nPRINT\r\n".getBytes());
    //printer.getGraphicsUtil().printImage(bitmap, 0, 0, -1, -1, false);
    Utils.DebugLog(Utils.TAG_PRINTERMODULE, "Bitmap enviado...");
} else {
    Utils.DebugLog(Utils.TAG_PRINTERMODULE, "La impresora no est� conectada, imprimirBitmap() fall�");
}