Java实现ESC/POS指令打印图片如何适配纸张宽度居中满幅打印
ESC/POS 安卓端图片全宽居中打印调整方案
第一步:预先适配图片到打印纸宽度
首先确认你使用的打印纸对应的可打印像素宽度,常见规格:
- 58mm 热敏纸:通用可打印宽度为 384 像素
- 80mm 热敏纸:通用可打印宽度为 576 像素
在调用getPixelsSlow方法处理图片之前,先对原始Bitmap做等比缩放,代码示例如下:
// original 为原始待打印Bitmap,targetPrintWidth 填对应纸张的可打印宽度 private Bitmap scaleBitmapToFitPaper(Bitmap original, int targetPrintWidth) { float scaleRatio = (float) targetPrintWidth / original.getWidth(); int scaledHeight = Math.round(original.getHeight() * scaleRatio); return Bitmap.createScaledBitmap(original, targetPrintWidth, scaledHeight, true); }
处理后的Bitmap再传入getPixelsSlow方法生成打印用的像素数据即可。
第二步:发送居中对齐打印指令
在发送图片打印数据流之前,先向打印机发送ESC/POS居中对齐指令:new byte[]{0x1B, 0x61, 0x01}
图片打印完成后,可发送左对齐指令复位打印格式,避免后续内容继承居中属性:new byte[]{0x1B, 0x61, 0x00}
注意事项
- 部分品牌打印机可打印宽度和通用规格有差异,可以先打印全宽测试条确认实际最大像素值,再填入缩放参数
- 不需要图片抗锯齿的场景下,可将
createScaledBitmap最后一个参数改为false,提升打印速度
内容的提问来源于stack exchange,提问作者Malindu Gimhan
相关产品推荐
相关产品推荐

