I am trying to convert PDF To image Bitmap.. and for that I am Using this Code Below.
pdfFile = Environment.getExternalStorageDirectory().toString() + "/" + "imagepdf.pdf"
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
try {
Uri uri = MainActivity.getUriFromFile(PdfExtrectorActivity.this,new File(pdfFile));
final ParcelFileDescriptor parcelFileDescriptor = getContentResolver().openFileDescriptor(
uri, "r");
final FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
pdfRenderer = new PdfRenderer(parcelFileDescriptor);
} catch (IOException e) {
e.printStackTrace();
}
Bitmap bitmap;
final int pageCount = pdfRenderer.getPageCount();
for (int i = 0; i < pageCount; i++) {
PdfRenderer.Page page = pdfRenderer.openPage(i);
bitmap = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888);
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
// close the page
page.close();
}
// close the renderer
pdfRenderer.close();
}
when I send ParcelFileDescriptor to pdfRenderer it will throws exception
java.io.IOException: cannot create document. Error: 3
I found Some Link from GitHub issues. https://github.com/googlesamples/android-PdfRendererBasic/issues/15 but it wont help me.
Any Help Accepted. thank you.
my Problem solved with this solutions to convert Image Bitmap from PDF which are in SD card.,
And this will worked fine for me
File file = new File(getCacheDir(), PDF_FILE_NAME);
//if (!file.exists()) {
// Since PdfRenderer cannot handle the compressed asset file directly, we copy it into
// the cache directory.
//InputStream asset = context.getAssets().open("imagepdf.pdf");
FileInputStream fileInputStream = null;
FileOutputStream output = null;
try {
fileInputStream = new FileInputStream( Environment.getExternalStorageDirectory().toString() + "/imagepdf.pdf");
output = new FileOutputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
final byte[] buffer = new byte[1024];
int size;
while ((size = fileInputStream.read(buffer)) != -1) {
output.write(buffer, 0, size);
}
fileInputStream.close();
output.close();
//}
ParcelFileDescriptor mFileDescriptor = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
// This is the PdfRenderer we use to render the PDF.
PdfRenderer renderer = null;
if (mFileDescriptor != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
renderer = new PdfRenderer(mFileDescriptor);
Bitmap bitmap;
final int pageCount = renderer.getPageCount();
for (int i = 0; i < pageCount; i++) {
PdfRenderer.Page page = renderer.openPage(i);
// say we render for showing on the screen
bitmap = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888);
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
myImageBitmap.add(bitmap);
// do stuff with the bitmap
// close the page
page.close();
}
// close the renderer
renderer.close();
}
}