【问题标题】:Bitmap looks heavily tilted when printing with a Bluetooth printer使用蓝牙打印机打印时位图看起来严重倾斜
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 2019-12-31
      • 2011-12-28
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多