Library penampil PDF Jetpack, yang didukung oleh API framework, menawarkan solusi siap pakai dan berperforma tinggi untuk aplikasi terkait dokumen PDF di Android.
Library penampil PDF (androidx.pdf), menyediakan UI penampil PDF yang dapat disematkan yang memungkinkan pengguna melakukan hal berikut:
- Membuka dan melihat dokumen PDF
- Menelusuri dan memilih konten
- Zoom dan scroll
- Menyimpan anotasi dokumen
- Berinteraksi dengan PDF menggunakan stilus
Anda dapat membuat pengalaman PDF berfitur lengkap dengan mengintegrasikan API library Jetpack atau menggunakan API framework secara langsung.
Library PDF Jetpack
Library PDF Jetpack menyediakan class PdfViewerFragment
yang merender dokumen PDF, termasuk PDF yang dipaginasi. Setiap halaman dirender dalam tampilannya sendiri. PdfViewerFragment menampilkan tombol tindakan mengambang
untuk dukungan anotasi dan biasanya menyertakan tombol atau kontrol UI lain yang
membuka menu penelusuran.
Untuk mempelajari cara menerapkan PdfViewerFragment, lihat
Menerapkan penampil PDF.
Framework API
Library Jetpack menggunakan API framework untuk mengurai dan memuat dokumen PDF.
PdfRenderer menyediakan API framework dasar yang terkait dengan rendering PDF.
Sebelum Android V (level API 35), class PdfRenderer dan
PdfRenderer.Page menyediakan API untuk penanganan PDF. Class PdfRenderer dan PdfRenderer.Page telah diupdate di
Android V dengan kemampuan PDF lanjutan.
PdfRenderer
API sebelum Android V
getPageCount()— Mendapatkan jumlah halaman dalam dokumen.openPage(index: Int)— Membuka halaman untuk rendering.shouldScaleForPrinting()— Mendapatkan apakah dokumen harus disesuaikan ukurannya untuk dicetak. Pertimbangkan informasi ini jika dokumen dirender untuk dicetak dan ukuran media target berbeda dengan ukuran halaman.
API yang ditambahkan di Android V
PdfRenderer(fileDescriptor: ParcelFileDescriptor, params: LoadParams)— Membuat instance baru. Mendukung pemuatan PDF yang dilindungi sandi.getDocumentLinearizedType()— Menampilkan jenis dokumen yang dilinearisasi untuk PDF yang berukuran kurang dari 1 KB.getPdfFormType()— Menampilkan jenis formulir PDF yang dimuat.write(destination: ParcelFileDescriptor, removePasswordProtection: Boolean)— Menyimpan status dokumen yang saat ini dimuat ke deskriptor file yang dapat ditulis yang diteruskan sebagai argumen.
PdfRenderer.Page
Class PdfRenderer.Page merepresentasikan halaman dokumen PDF untuk rendering.
API sebelum Android V
RENDER_MODE_FOR_DISPLAY— Mode untuk merender konten agar ditampilkan di layar.RENDER_MODE_FOR_PRINT— Mode untuk merender konten untuk dicetak.getIndex()— Mendapatkan indeks halaman.getWidth()— Mendapatkan lebar halaman dalam poin (1/72 inci).getHeight()— Mendapatkan tinggi halaman dalam poin (1/72 inci).render(destination: Bitmap, destClip: Rect?, transform: Matrix?, renderMode: Int)— Merender halaman ke bitmap.
API yang ditambahkan di Android V
applyEdit(editRecord: FormEditRecord)— MenerapkanFormEditRecordke PDF.getFormWidgetInfos()— Menampilkan informasi tentang semua widget formulir di halaman.getFormWidgetInfos(types: IntArray)— Menampilkan informasi tentang semua widget formulir dari jenis yang ditentukan di halaman.getFormWidgetInfoAtIndex(widgetIndex: Int)— Menampilkan informasi tentang widget yang diidentifikasi oleh argumenwidgetIndex.fun getFormWidgetInfoAtPosition(x: Int, y: Int)— Menampilkan informasi tentang widget pada titik tertentu.getGotoLinks()— Mendapatkan bookmark dan link "buka" yang ada di halaman dokumen PDF.getImageContents()— Menampilkan daftarPdfPageImageContentyang ditemukan di halaman.getLinkContents()— Mendapatkan batas dan URL semua link di halaman.getTextContents()— Menampilkan daftarPdfPageTextContentdi halaman.render(destination: Bitmap, destClip: Rect?, transform: Matrix?, params: RenderParams)— Merender halaman ke bitmap.searchText(query: String)— Menelusuri string tertentu di halaman dan menampilkan batas semua kecocokan.selectContent(start: SelectionBoundary, stop: SelectionBoundary)— MenampilkanPageSelectionyang merepresentasikan konten di antara dua batas.
Penggunaan API
PdfRenderer#write()API menulis versi PDF yang dimuat keParcelFileDescriptor. Kasus penggunaan mencakup hal-hal berikut:- Menyimpan salinan dokumen PDF setelah menghapus keamanan sandi
- Menyimpan hasil edit (anotasi, pengisian formulir, dll.)
API
PdfRenderer.Page#render()merender halaman atau sebagian halaman ke dalam bitmap. Dalam kasus zoom, API juga dapat digunakan untuk merender sebagian halaman ke dalam bitmap dengan ukuran tertentu.PdfRenderer.PageAPIgetImageContents(),getLinkContents(), dangetTextContents()menampilkan konten yang tersedia di halaman. Anda dapat menggunakan konten untuk aksesibilitas dan pengumuman TalkBack atau di fitur yang didukung AI seperti membuat ringkasan halaman.PdfRenderer.Page#selectContentAPI memilih konten yang tersedia di halaman. Anda dapat menggunakan konten yang dipilih untuk tindakan seperti berikut:- Panggil, jika nomor telepon
- Membuka Maps, jika alamat dipilih
- Salin
- Bagikan
- Komentar
Kompatibilitas
Class PdfRendererPreV mengekspos Android V API di Android R hingga U (level API 30–34).
Referensi lainnya
Lihat Menerapkan penampil PDF untuk mempelajari cara menambahkan penampil PDF ke aplikasi Anda.