PDFRenderer - 如何将多页pdf呈现为Web视图或imageview?

时间:2016-12-03 00:45:42

标签: android pdf pdf-generation

我是Android开发新手,一直在寻找渲染我创建的pdf的方法。基本上我正在尝试渲染多个页面,然后将它们全部放在webView中,我可以向下滚动并查看每个页面。截至目前,我在下面的代码基本上显示了第一页,它在imageView中。每次我尝试做多个页面时,页面基本上都会在一个视图上结束,一个视图在另一个视图之上。

如果您有办法在webView中执行此操作,请告诉我。 示例代码非常有用。

提前致谢!

try {
            File file = new File(getExternalFilesDir(null).getAbsolutePath(), "document.pdf");
            mPdfDocument.writeTo(new FileOutputStream(file));

            ParcelFileDescriptor fd = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
           // PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY));
            PdfRenderer renderer = new PdfRenderer(fd);
            Bitmap bitmap = Bitmap.createBitmap(800, 1000, Bitmap.Config.ARGB_4444);
            int pageCount = renderer.getPageCount();
            if (pageCount== 7) {
                Log.v("its right", "its right");
            } else {
                Log.v("its not right", "its right");
            }

                PdfRenderer.Page pages = renderer.openPage(0);
                pages.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
                pages.close();

            imageView.setImageBitmap(bitmap);

       } catch (IOException e) {
            Log.e("cannot generate pdf", "e");
 }

2 个答案:

答案 0 :(得分:1)

 // create a new renderer
 PdfRenderer renderer = new PdfRenderer(getSeekableFileDescriptor());

 // let us just render all pages
 final int pageCount = renderer.getPageCount();
 for (int i = 0; i < pageCount; i++) {
     Page page = renderer.openPage(i);

     // say we render for showing on the screen
     page.render(mBitmap, null, null, Page.RENDER_MODE_FOR_DISPLAY);

     // do stuff with the bitmap

     // close the page
     page.close();
 }

 // close the renderer
 renderer.close();

秘密在render.getPageCount();

答案 1 :(得分:0)

我们无法通过PdfRenderer渲染多个pdf页面,PdfRendere创建当前页面的位图。如果您有此要求,则应通过分配前一个和下一个按钮来实现。当当前页面将被渲染并且您将转到下一页时,第一页渲染将被关闭。