我想使用 Datecs Termal 打印机打印一个 ScrollView。视图就像购买票一样是一张票。我想在纸上精确测量 300 毫米的高度。我使用这种方法将滚动视图转换为位图:
public static Bitmap getBitmapFromView(View view, int height, int width) {
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Drawable bgDrawable = view.getBackground();
canvas.drawColor(Color.WHITE);
if (bgDrawable != null)
bgDrawable.draw(canvas);
else
canvas.drawColor(Color.WHITE);
view.draw(canvas);
return bitmap;
}
问题是当隐藏或显示文本视图时,更改位图的高度。此外,它还会根据屏幕的密度改变大小。我想用视图和空白空间填充 300 毫米的纸张。
我尝试了两种解决方案:
- 进纸与视图高度和 300 毫米之间的差异一样多
- 生成位图高度正好是 300mm。
我无法以任何方式做到这一点。
Datecs sdk 包含这种进纸方法:
public void feedPaper(int lines) throws IOException {
if (lines >= 0 && lines <= 255) {
byte[] buf = new byte[]{27, 74, (byte)lines};
synchronized(this) {
this.write(buf);
}
} else {
throw new IllegalArgumentException("The lines is out of range");
}
}
但是我不知道位图的高度、每行的高度和纸的300毫米之间的关系。
有谁能够帮我?非常感谢!