I am selecting Multiple Images from Gallery and displaying it in Image switcher. I want to convert all these Images that are being displayed in Image Switcher into PDF but I don’t know how do I do this. I tried using android.graphics.pdf.PdfDocument but I don’t know how to properly use it to achieve the required functionality. Please someone suggest me how can I convert multiple images to PDF.
I am attaching my tried code below:
My IMG2PDF.java from my Android studio IDE:
public class IMG2PDF extends AppCompatActivity { Toolbar toolbar; Button selectfilebtn,convert2pdfbtn,nextbtn,prevbtn; ArrayList<Uri> imageuri =new ArrayList<>();; ImageSwitcher imageSwitcher; private static final int PICK_IMAGES=0; int position=0; int img; @Override public void onCreate( Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_imagetopdfconverter); selectfilebtn = findViewById(R.id.select_file); convert2pdfbtn = findViewById(R.id.convert_to_pdf); nextbtn = findViewById(R.id.next); prevbtn = findViewById(R.id.prev); imageSwitcher = findViewById(R.id.imagetoconvert); imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() { @Override public View makeView() { ImageView imageView = new ImageView(IMG2PDF.this); return imageView; } }); ActivityResultLauncher<Intent> launchactivity = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result) { Intent data = result.getData(); if (data.getClipData() != null) { img = data.getClipData().getItemCount(); for (int i = 0; i < img; i++) { Uri imguri = data.getClipData().getItemAt(i).getUri(); imageuri.add(imguri); } imageSwitcher.setImageURI(imageuri.get(0)); position = 0; } } }); selectfilebtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(IMG2PDF.this, "Soon the App will be world best App InShaAllah ta'aala", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); intent.setAction(Intent.ACTION_GET_CONTENT); launchactivity.launch(Intent.createChooser(intent, "Pictures: ")); } }); nextbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (position > 0) { position--; imageSwitcher.setImageURI(imageuri.get(position)); } } }); convert2pdfbtn.setOnClickListener(new View.OnClickListener() { @RequiresApi(api = Build.VERSION_CODES.KITKAT) @Override public void onClick(View v) { //I dont know what to provide in Path final File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"MY_PDF"+".pdf"); if(file!=null) { try { FileOutputStream fileOutputStream=new FileOutputStream(file); PdfDocument pdfDocument=new PdfDocument(); for(int i=0;i<imageuri.size();i++) { Bitmap bitmap= BitmapFactory.decodeFile(imageuri.get(i).getPath()); PdfDocument.PageInfo pageInfo=new PdfDocument.PageInfo.Builder(bitmap.getWidth(),bitmap.getHeight(),(i+1)).create(); PdfDocument.Page page=pdfDocument.startPage(pageInfo); Canvas canvas=page.getCanvas(); Paint paint=new Paint(); paint.setColor(Color.BLUE); canvas.drawPaint(paint); canvas.drawBitmap(bitmap,0f,0f,null); pdfDocument.finishPage(page); bitmap.recycle(); } pdfDocument.writeTo(fileOutputStream); pdfDocument.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } }); prevbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(IMG2PDF.this, "WORKING", Toast.LENGTH_SHORT).show(); if (position < imageuri.size() - 1) { position++; imageSwitcher.setImageURI(imageuri.get(position)); } } }); } }
Anonymous Asked question May 13, 2021
Recent Comments