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