使用蓝牙打印机打印时,位图看起来倾斜很大

时间:2019-02-27 06:41:19

标签: java android printing bitmap bluetooth

我正在尝试使用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

谢谢。

1 个答案:

答案 0 :(得分:0)

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