通过蓝牙打印机打印图像打印字符串

时间:2014-09-29 12:52:32

标签: android printing bitmap bluetooth

我一直在通过蓝牙打印机打印图像。当我测试它 文字打印效果很好。但是当谈到图像时,只打印字符串字符。 我已将布局转换为位图。并将其保存到SD卡中。我需要将位图转换为 支持打印机的东西。我的应用程序使用“ZEBRA EZ320”打印机。 我使用以下代码将布局转换为位图,

View rootView = findViewById(android.R.id.content).getRootView();
rootView.setDrawingCacheEnabled(true);
return rootView.getDrawingCache();

2 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。

Bitmap localBitmap=BitmapFactory.decodeResource(getResources(), image);
BluetoothConnection  myConn = new BluetoothConnection(macaddr);
ZebraPrinter myPrinter = new ZebraPrinterCpcl(myConn);
myConn.open();
new ZebraPrinterLegacyDelegator(myPrinter).getGraphicsUtil().printImage(localBitmap, 0, 0, -1, -1,       false);
// to reduce extra space 
myConn.write("! UTILITIES\r\nIN-MILLIMETERS\r\nSETFF 10 2\r\nPRINT\r\n".getBytes());
myConn.close();

答案 1 :(得分:0)

上述答案中提到的代码使用的是ZebraPrinterLegacyDelegator,不推荐使用。

使用以下代码

InputStream inputStream = assetManager.open("printing/ic_launcher.png");

        ZebraImageI zebraImageI = ZebraImageFactory.getImage(BitmapFactory.decodeStream(inputStream));
        zebraPrinter.printImage(zebraImageI, 250, 0, 0, -1, false);

可以按照以下方式创建Zebra Printer实例,

zebraPrinter = ZebraPrinterFactory.getInstance(printerConnection);

printImage参数如下,

image - the image to be printed.
x - horizontal starting position in dots.
y - vertical starting position in dots.
width - desired width of the printed image. Passing a value less than 1 will preserve original width.
height - desired height of the printed image. Passing a value less than 1 will preserve original height.
insideFormat - boolean value indicating whether this image should be printed by itself (false), or is part of a format being written to the connection (true).

另外,为了解决对齐问题,请更改x值以将图像移动到方便的位置。