首页 > 解决方案 > 使用蓝牙打印机打印时位图看起来严重倾斜

问题描述

我正在尝试使用蓝牙打印机打印 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 转换而来的,因此打印应该看起来像它,但不是)。 截屏

以下是打印的 PDF 的外观: 打印 您可以看到我从 Google 获取的 Panda 图像看起来不错。

这里是仔细看看。如果你仔细看,你会发现 PDF 正在打印,但它看起来很倾斜,在某些情况下,你甚至可以看到正在打印的徽标,但它看起来又是倾斜的。 仔细看看

打印机型号:商米V1s-G。Android 版本:6.0 targetSdkVersion 28 minSdkVersion 21

提前致谢。

标签: javaandroidprintingbitmapbluetooth

解决方案


在打印机的 SDK 中找到了一种方法来缩放位图并防止这种情况发生。这可能是仅与此特定打印机型号有关的问题,因此其他打印机可​​能不会发生这种情况。


推荐阅读