我正在尝试使用Bluetooth打印机打印PDF,我正在尝试将PDF转换为Bitmap,然后将Bitmap转换为字节数组,并通过蓝牙发送,到目前为止,能够打印位图图像而没有问题,但是当涉及到PDF时,打印的图像看起来非常倾斜,这是一个非常奇怪的结果,我试图将PDF转换为位图,然后将其另存为PNG和结果文件看起来完全正常,但不是印刷版本。
这是我用来将PDF转换为位图的代码。
public static Bitmap fileToBitmap(File file) {
try {
PdfRenderer pdfRenderer = new PdfRenderer(ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY));
PdfRenderer.Page page = pdfRenderer.openPage(0);
int pdfWidth = page.getWidth();
int pdfHeight = page.getHeight();
Bitmap pdfBitmap = Bitmap.createBitmap(pdfWidth, pdfHeight, Bitmap.Config.ARGB_8888);
page.render(pdfBitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
page.close();
pdfRenderer.close();
final Bitmap finalBitmap = Bitmap.createBitmap(pdfBitmap.getWidth(), pdfBitmap.getHeight(), pdfBitmap.getConfig());
Canvas canvas = new Canvas(finalBitmap);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(pdfBitmap, 0, 0, null);
return finalBitmap;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
由于不支持透明度,因此我将白色位图用作背景。 我已经尝试了几种公式来尝试正确缩放位图,以使其适合纸张,其中有些可以打印出比纸张小的尺寸,因此我认为问题不应该是打印机错误缩放或类似的东西。 / p>
以下是磁盘中写入的PNG外观的屏幕截图(它是从位图转换而来的,而位图是从PDF转换而来的,因此打印看起来应该像它,除非不是)。 Screenshot
以下是“打印的PDF”的外观: Printing 您可以看到我从Google拍摄的熊猫图像看起来不错。
在这里仔细看。如果您非常仔细地看,您会看到PDF实际上正在打印,但是它看起来很倾斜,在某些情况下,您甚至可以看到正在打印的徽标,但是看起来还是很倾斜。 Closer look
打印机型号:Sunmi V1s-G。 Android版本:6.0 targetSdkVersion 28 minSdkVersion 21
谢谢。
答案 0 :(得分:0)
在打印机的SDK中找到一种方法来缩放位图并防止这种情况发生。 可能仅与该特定打印机型号有关的问题,因此其他打印机可能不会发生。