问题
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