android转换后的图像中的Pdf渲染器是透明背景

时间:2017-07-21 12:35:45

标签: android image pdfrenderer

我是Android开发的新手。我正致力于将Pdf转换为Image并将其存储在一个位置。我已经使用PdfRenderer(API级别21)将PDF转换为位图Image。转换后的图像是透明背景。请指导我转换图像与白色背景。这样我就可以把它转换成二进制数字。

PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(pdfFile, ParcelFileDescriptor.MODE_READ_ONLY));

        Bitmap bitmap;
        final int pageCount = renderer.getPageCount();
        System.out.println("pageCount"+pageCount);
        for (int i = 0; i < pageCount; i++) {
            PdfRenderer.Page page = renderer.openPage(i);

            int width = getResources().getDisplayMetrics().densityDpi / 72 * page.getWidth();
            int height = getResources().getDisplayMetrics().densityDpi / 72 * page.getHeight();
            bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT);
            storeImage(bitmap,"test.bmp");//I have wrote a function here to save the image

This is the Transparent Image I get after converting

提前致谢。

2 个答案:

答案 0 :(得分:7)

我使用了画布并且它有效 Canvas canvas = new Canvas(bitmap); canvas.drawColor(Color.WHITE); canvas.drawBitmap(bitmap, 0, 0, null); 谢谢。

答案 1 :(得分:2)

使用Abdul的答案,这是一个完整的实现,可以避免在来自Pdf的位图中使用透明背景。

int pageCount = renderer.getPageCount();
for (int pageIndex = 0; pageIndex < pageCount; pageIndex++) {
    PdfRenderer.Page page = renderer.openPage(pageIndex);
    Bitmap bitmap = Bitmap.createBitmap(page.getWidth(), page.getHeight(), Bitmap.Config.ARGB_8888);
    // Paint bitmap before rendering
    Canvas canvas = new Canvas(bitmap);
    canvas.drawColor(Color.WHITE);
    canvas.drawBitmap(bitmap, 0, 0, null);
    // Render Pdf page into bitmap
    page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
    page.close();
    bitmaps.add(bitmap);
}