【发布时间】:2019-02-27 06:41:18
【问题描述】:
我正在尝试使用蓝牙打印机打印 PDF,我正在尝试将 PDF 转换为位图,然后将位图转换为字节数组,然后通过蓝牙发送,到目前为止我一直能够毫无问题地打印位图图像,但是当涉及到 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;
}
}
我使用白色位图作为背景,因为不支持透明度。 我已经尝试了几个公式来尝试正确缩放位图,使其适合纸张,其中一些打印出来的尺寸比纸张小,所以我想问题不应该是打印机错误地缩放它之类的。
这是写入磁盘中的 PNG 的屏幕截图(它是从 PDF 转换的位图转换而来的,因此打印应该看起来像它,但它不是)。 Screenshot
以下是印刷版 PDF 的外观: Printing 您可以看到我从 Google 获取的 Panda 图片看起来不错。
这里是仔细看看。如果你仔细看,你会发现 PDF 确实在打印,但看起来很倾斜,在某些情况下,你甚至可以看到正在打印的徽标,但它看起来又是倾斜的。 Closer look
打印机型号:商米V1s-G。 安卓版本:6.0 targetSdkVersion 28 minSdkVersion 21
提前致谢。
【问题讨论】:
标签: java android printing bitmap bluetooth