This post describes how to pick a pdf file and display the pages of the pdf file.
Create your layout in activity_main.xml.
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="PICK FILE" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="0/0" android:textSize="20dp" app:layout_constraintStart_toEndOf="@id/button1" app:layout_constraintBottom_toTopOf="@id/imageView" app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toStartOf="@id/button2"/> <Button android:id="@+id/button2" android:layout_width="80dp" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="PREV" app:layout_constraintEnd_toStartOf="@+id/button3" app:layout_constraintStart_toEndOf="@+id/textView1" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/button3" android:layout_width="80dp" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="NEXT" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> <ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="0dp" android:scaleType="fitCenter" android:background="@color/white" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/button2" android:layout_margin="8dp" android:elevation="8dp" tools:srcCompat="@tools:sample/backgrounds/scenic" /> </androidx.constraintlayout.widget.ConstraintLayout>
In MainActivity.java use following codes.
package com.example.pickfile; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.pdf.PdfRenderer; import android.net.Uri; import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import java.io.FileNotFoundException; import java.io.IOException; public class MainActivity extends AppCompatActivity { TextView textview1; ImageView imageview1; PdfRenderer renderer; int total_pages = 0; int display_page = 0; public static final int PICK_FILE = 99; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button1 = findViewById(R.id.button1); Button button2 = findViewById(R.id.button2); Button button3 = findViewById(R.id.button3); textview1 = findViewById(R.id.textView1); imageview1 = findViewById(R.id.imageView); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("application/pdf"); startActivityForResult(intent, PICK_FILE); } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // move to previous page if (display_page > 0) { display_page--; _display(display_page); } } }); button3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // move to next page if (display_page < (total_pages - 1)) { display_page++; _display(display_page); } } }); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PICK_FILE && resultCode == RESULT_OK){ if (data != null){ Uri uri = data.getData(); try { ParcelFileDescriptor parcelFileDescriptor = getContentResolver() .openFileDescriptor(uri, "r"); renderer = new PdfRenderer(parcelFileDescriptor); total_pages = renderer.getPageCount(); display_page = 0; _display(display_page); } catch (FileNotFoundException fnfe){ } catch (IOException e){ } } } } private void _display(int _n) { if (renderer != null) { PdfRenderer.Page page = renderer.openPage(_n); Bitmap mBitmap = Bitmap.createBitmap(page.getWidth(), page.getHeight(), Bitmap.Config.ARGB_8888); page.render(mBitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY); imageview1.setImageBitmap(mBitmap); page.close(); textview1.setText((_n + 1) + "/" + total_pages); } } @Override public void onDestroy() { super.onDestroy(); if (renderer != null){ renderer.close(); } } }
Now run the app.