Finally I found very simple solution to this, Download library from here.
Use below code to get images from PDF:
import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.RectF; import android.net.Uri; import android.os.AsyncTask; import android.os.Environment; import android.provider.MediaStore; import org.vudroid.core.DecodeServiceBase; import org.vudroid.core.codec.CodecPage; import org.vudroid.pdfdroid.codec.PdfContext; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; /** * Created by deepakd on 06-06-2016. */ public class PrintUtils extends AsyncTask<Void, Void, ArrayList<Uri>> { File file; Context context; ProgressDialog progressDialog; public PrintUtils(File file, Context context) { this.file = file; this.context = context; } @Override protected void onPreExecute() { super.onPreExecute(); // create and show a progress dialog progressDialog = ProgressDialog.show(context, "", "Please wait..."); progressDialog.show(); } @Override protected ArrayList<Uri> doInBackground(Void... params) { ArrayList<Uri> uris = new ArrayList<>(); DecodeServiceBase decodeService = new DecodeServiceBase(new PdfContext()); decodeService.setContentResolver(context.getContentResolver()); // a bit long running decodeService.open(Uri.fromFile(file)); int pageCount = decodeService.getPageCount(); for (int i = 0; i < pageCount; i++) { CodecPage page = decodeService.getPage(i); RectF rectF = new RectF(0, 0, 1, 1); // do a fit center to A4 Size image 2480x3508 double scaleBy = Math.min(UIUtils.PHOTO_WIDTH_PIXELS / (double) page.getWidth(), // UIUtils.PHOTO_HEIGHT_PIXELS / (double) page.getHeight()); int with = (int) (page.getWidth() * scaleBy); int height = (int) (page.getHeight() * scaleBy); // Long running Bitmap bitmap = page.renderBitmap(with, height, rectF); try { OutputStream outputStream = FileUtils.getReportOutputStream(System.currentTimeMillis() + ".JPEG"); // a bit long running bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); outputStream.close(); // uris.add(getImageUri(context, bitmap)); uris.add(saveImageAndGetURI(bitmap)); } catch (IOException e) { e.printStackTrace(); } } return uris; } @Override protected void onPostExecute(ArrayList<Uri> uris) { progressDialog.hide(); //get all images by uri //ur implementation goes here } public void shareMultipleFilesToBluetooth(Context context, ArrayList<Uri> uris) { try { Intent sharingIntent = new Intent(); sharingIntent.setAction(Intent.ACTION_SEND_MULTIPLE); sharingIntent.setType("image/*"); // sharingIntent.setPackage("com.android.bluetooth"); sharingIntent.putExtra(Intent.EXTRA_STREAM, uris); context.startActivity(Intent.createChooser(sharingIntent,"Print PDF using...")); } catch (Exception e) { e.printStackTrace(); } } private Uri saveImageAndGetURI(Bitmap finalBitmap) { String root = Environment.getExternalStorageDirectory().toString(); File myDir = new File(root + "/print_images"); myDir.mkdirs(); String fname = "Image-"+ MathUtils.getRandomID() +".jpeg"; File file = new File (myDir, fname); if (file.exists ()) file.delete (); try { FileOutputStream out = new FileOutputStream(file); finalBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } return Uri.parse("file://"+file.getPath()); } }
FileUtils.java
package com.airdata.util; import android.net.Uri; import android.os.Environment; import android.support.annotation.NonNull; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; /** * Created by DeepakD on 21-06-2016. */ public class FileUtils { @NonNull public static OutputStream getReportOutputStream(String fileName) throws FileNotFoundException { // create file File pdfFolder = getReportFilePath(fileName); // create output stream return new FileOutputStream(pdfFolder); } public static Uri getReportUri(String fileName) { File pdfFolder = getReportFilePath(fileName); return Uri.fromFile(pdfFolder); } public static File getReportFilePath(String fileName) { /*File file = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS), FileName);*/ File file = new File(Environment.getExternalStorageDirectory() + "/AirPlanner/Reports"); //Create report directory if does not exists if (!file.exists()) { //noinspection ResultOfMethodCallIgnored file.mkdirs(); } file = new File(Environment.getExternalStorageDirectory() + "/AirPlanner/Reports/" + fileName); return file; } }
You can view converted images in Gallery or in SD card. Please let me know if you need any help.