這種需求比較常見(jiàn),目前市面上的機(jī)器基本上都只有文字、圖片的打印方法可調(diào)用,但單純的打印文字、圖片是無(wú)法實(shí)現(xiàn)文字圖片并排打印的,只能考慮使用圖片方式實(shí)現(xiàn),思路如下:
把文字生成圖片,然后和二維碼圖片左右合并成一張,再調(diào)用打印圖片的方法,將合成的圖片打印出來(lái),這樣即可達(dá)到目的,另外需要注意,圖片左右合并時(shí)候,需要2張圖片高度一致,否則低的一邊會(huì)出現(xiàn)黑邊,同理,上下合并則需要2張圖片寬度一致
1. 附參考方法:
/**
* 文字轉(zhuǎn)圖片
* @param text 將要生成圖片的內(nèi)容
* @param textSize 文字大小
* @return
*/
public static Bitmap textAsBitmap(String text, float textSize) {
TextPaint textPaint = new TextPaint();
textPaint.setColor(Color.BLACK);
textPaint.setTextSize(textSize);
StaticLayout layout = new StaticLayout(text, textPaint, 380,
Alignment.ALIGN_NORMAL, 1.3f, 0.0f, true);
Bitmap bitmap = Bitmap.createBitmap(layout.getWidth() + 20,
layout.getHeight() + 20, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.translate(10, 10);
canvas.drawColor(Color.WHITE);
layout.draw(canvas);
Log.d("textAsBitmap",
String.format("1:%d %d", layout.getWidth(), layout.getHeight()));
return bitmap;
}
/**
* 兩張圖片左右合并成一張
*
* @param bitmap1
* @param bitmap2
* @return
*/
public Bitmap twoBtmap2One1(Bitmap bitmap1, Bitmap bitmap2) {
Bitmap bitmap3 = Bitmap.createBitmap(bitmap1.getWidth()+bitmap2.getWidth(),
bitmap1.getHeight() , bitmap1.getConfig());
Canvas canvas = new Canvas(bitmap3);
canvas.drawBitmap(bitmap1, new Matrix(), null);
canvas.drawBitmap(bitmap2,bitmap1.getWidth(), 0, null);
return bitmap3;
}
// 縮放圖片
public static Bitmap zoomImg(Bitmap bm, int newWidth, int newHeight) {
// 獲得圖片的寬高
int width = bm.getWidth();
int height = bm.getHeight();
// 計(jì)算縮放比例
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// 取得想要縮放的matrix參數(shù)
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
// 得到新的圖片
Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix,
true);
return newbm;
}
深圳市群索科技有限公司
電話:0755-23280616/23280696
郵箱:info@szqunsuo.com
網(wǎng)址:mcvoice.cn
地址:廣東省深圳市西鄉(xiāng)航城工業(yè)區(qū)富鑫林工業(yè)園C棟4樓