How to convert large PDF into bitmap quickly using virtualization concept in java?

爷,独闯天下 提交于 2020-07-31 05:07:27

问题


ImI have created plugin in flutter. I sending pdf path from main.dart to plugin.java class and created method named getImages which is used to coverting pdf into bitmap.

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
   ArrayList getImages(String path) {
    File file = new File(path);
    PdfRenderer renderer;
    ArrayList bitmaps = new ArrayList();
    try {
      ParcelFileDescriptor fileDescriptor = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
      renderer = new PdfRenderer(fileDescriptor);
      int pageCount = renderer.getPageCount();
      for (int i = 0; i < pageCount; i++) {
        PdfRenderer.Page page = renderer.openPage(i);
        int width = page.getWidth();
        int height = page.getHeight();
        Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        bitmap.eraseColor(Color.WHITE);
        Rect rect = new Rect(0, 0, width, height);
        page.render(bitmap, rect, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
        page.close();
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
        bitmaps.add(outStream.toByteArray());
      }
      return bitmaps;
    } catch (Exception e) {
      ArrayList bitmap = new ArrayList();
      return bitmap;
    }
  }

Then I am converting this bitmap into image in main.dart. If I load 3 pages,it takes lesser time to load pdf images. But If I load large pdf. it takes too much time to load. So above java code takes too much time to coverting pdf into bitmap.I want to reduce this time. So I want to use virtualization concept in this.But I have no idea to use virtualization. Please help me to do this.

来源:https://stackoverflow.com/questions/62997802/how-to-convert-large-pdf-into-bitmap-quickly-using-virtualization-concept-in-jav

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!