简体   繁体   English

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

[英]Pdf Renderer in android converted image is Transparent background

I'm a newbie for android developing.我是android开发的新手。 I'm working on converting Pdf to Image and storing it in a location.我正在将 Pdf 转换为 Image 并将其存储在某个位置。 I have used the PdfRenderer (API level 21) to convert the PDF to bitmap Image.我使用 PdfRenderer(API 级别 21)将 PDF 转换为位图图像。 The converted image is Transparent background.转换后的图像是透明背景。 Please guide me to convert the image with white background.请指导我转换白色背景的图像。 So that I can convert it to binary digits.这样我就可以将其转换为二进制数字。

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这是我转换后得到的透明图像

Thanks in advance.提前致谢。

I have used canvas and it worked我用过画布,效果很好

Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(bitmap, 0, 0, null);

Thank you.谢谢。

Using Abdul's answer, this is the complete implementation that worked for me to avoid having a transparent background in a bitmap that came from a Pdf.使用 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);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM