Penampil PDF Android

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) — Menerapkan FormEditRecord ke 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 argumen widgetIndex.
  • 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 daftar PdfPageImageContent yang ditemukan di halaman.
  • getLinkContents() — Mendapatkan batas dan URL semua link di halaman.
  • getTextContents() — Menampilkan daftar PdfPageTextContent di 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) — Menampilkan PageSelection yang merepresentasikan konten di antara dua batas.

Penggunaan API

  • PdfRenderer#write() API menulis versi PDF yang dimuat ke ParcelFileDescriptor. 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.Page API getImageContents(), getLinkContents(), dan getTextContents() 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#selectContent API 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.