2014-09-29 225 views
0

我一直在通过蓝牙打印机打印图像。当我测试它为 文本打印它完美的作品。但是当涉及到图像时,只打印字符串字符。 我已将布局转换为位图。并将其保存到SD卡中。我是否需要将位图转换为支持打印机的东西 。我的应用程序使用“ZEBRA EZ320”打印机。 我用下面的代码布局转换成位图,打印图像通过蓝牙打印机打印字符串

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

回答

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(); 
+0

但我有一些对齐问题。我上面提到的代码在图纸的左侧打印图像。我需要将其与中心对齐。建议我任何想法。 – ajantha 2014-10-08 04:55:32

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打印机实例可以如下创建,

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值以将图像移动到您方便的位置。

+0

感谢您的回复@Gokul。 – ajantha 2015-04-02 06:13:45