Biblioteka przeglądarki plików PDF Jetpack, oparta na interfejsach API platformy, to gotowe, wydajne rozwiązanie dla aplikacji na Androida związanych z dokumentami PDF.
Biblioteka przeglądarki plików PDF (androidx.pdf) udostępnia interfejs przeglądarki plików PDF, który można osadzić i który umożliwia użytkownikom wykonywanie tych czynności:
- Otwieranie i wyświetlanie dokumentów PDF
- Wyszukiwanie i wybieranie treści
- Powiększanie i przewijanie
- Zapisywanie adnotacji w dokumencie
- Interakcja z plikami PDF za pomocą rysika
Możesz utworzyć w pełni funkcjonalny plik PDF, integrując interfejsy API biblioteki Jetpack lub używając bezpośrednio interfejsów API platformy.
Biblioteka Jetpack PDF
Biblioteka Jetpack PDF udostępnia klasę PdfViewerFragment, która renderuje dokumenty PDF, w tym pliki PDF z podziałem na strony. Każda strona jest renderowana w osobnym widoku. PdfViewerFragment wyświetla pływający przycisk polecenia
do obsługi adnotacji i zwykle zawiera przycisk lub inny element interfejsu, który
otwiera menu wyszukiwania.
Aby dowiedzieć się, jak wdrożyć PdfViewerFragment, przeczytaj artykuł Implementowanie przeglądarki plików PDF.
Interfejsy API platformy
Biblioteka Jetpack używa interfejsów API platformy do analizowania i wczytywania dokumentów PDF.
PdfRenderer udostępnia podstawowe interfejsy API związane z renderowaniem plików PDF.
Przed Androidem V (API na poziomie 35) klasy PdfRenderer i PdfRenderer.Page udostępniały interfejsy API do obsługi plików PDF. Klasy PdfRenderer i PdfRenderer.Page zostały zaktualizowane w Androidzie V i mają zaawansowane funkcje obsługi plików PDF.
PdfRenderer
Interfejsy API starsze niż Android V
getPageCount()– pobiera liczbę stron w dokumencie.openPage(index: Int)– otwiera stronę do renderowania.shouldScaleForPrinting()– określa, czy dokument powinien być skalowany do druku. Weź pod uwagę te informacje, jeśli dokument jest renderowany do druku, a rozmiar docelowego nośnika różni się od rozmiaru strony.
Interfejsy API dodane w Androidzie V
PdfRenderer(fileDescriptor: ParcelFileDescriptor, params: LoadParams)– tworzy nową instancję. Obsługuje wczytywanie plików PDF chronionych hasłem.getDocumentLinearizedType()– zwraca zlinearyzowany typ dokumentu w przypadku plików PDF o rozmiarze mniejszym niż 1 KB.getPdfFormType()– zwraca typ formularza załadowanego pliku PDF.write(destination: ParcelFileDescriptor, removePasswordProtection: Boolean)– zapisuje stan aktualnie załadowanego dokumentu w deskryptorze pliku z możliwością zapisu przekazanym jako argument.
PdfRenderer.Page
Klasa PdfRenderer.Page reprezentuje stronę dokumentu PDF do renderowania.
Interfejsy API starsze niż Android V
RENDER_MODE_FOR_DISPLAY– tryb renderowania treści do wyświetlania na ekranie.RENDER_MODE_FOR_PRINT– tryb renderowania treści do druku.getIndex()– pobiera indeks strony.getWidth()– zwraca szerokość strony w punktach (1/72 cala).getHeight()– pobiera wysokość strony w punktach (1/72 cala).render(destination: Bitmap, destClip: Rect?, transform: Matrix?, renderMode: Int)– renderuje stronę do bitmapy.
Interfejsy API dodane w Androidzie V
applyEdit(editRecord: FormEditRecord)– stosujeFormEditRecorddo pliku PDF.getFormWidgetInfos()– zwraca informacje o wszystkich widżetach formularzy na stronie.getFormWidgetInfos(types: IntArray)– zwraca informacje o wszystkich widżetach formularzy określonych typów na stronie.getFormWidgetInfoAtIndex(widgetIndex: Int)– zwraca informacje o widżecie określonym przez argumentwidgetIndex.fun getFormWidgetInfoAtPosition(x: Int, y: Int)– zwraca informacje o widżecie w danym punkcie.getGotoLinks()– pobiera zakładki i linki do przejścia na stronie dokumentu PDF.getImageContents()– zwraca listęPdfPageImageContentznalezionych na stronie.getLinkContents()– pobiera granice i adresy URL wszystkich linków na stronie.getTextContents()– zwraca listęPdfPageTextContentna stronie.render(destination: Bitmap, destClip: Rect?, transform: Matrix?, params: RenderParams)– renderuje stronę do bitmapy.searchText(query: String)– wyszukuje na stronie podany ciąg znaków i zwraca granice wszystkich dopasowań.selectContent(start: SelectionBoundary, stop: SelectionBoundary)– ZwracaPageSelection, który reprezentuje zawartość między 2 granicami.
Wykorzystanie interfejsu API
Interfejs
PdfRenderer#write()API zapisuje wersję załadowanego pliku PDF w obiekcieParcelFileDescriptor. Przykłady zastosowań:- Zapisywanie kopii dokumentu PDF po usunięciu zabezpieczenia hasłem
- Zapisywanie zmian (adnotacji, wypełniania formularzy itp.)
Interfejsy
PdfRenderer.Page#render()renderują stronę lub jej część do postaci mapy bitowej. W przypadku powiększenia interfejs API może też renderować część strony do mapy bitowej o określonym rozmiarze.Interfejsy API
PdfRenderer.PagegetImageContents(),getLinkContents()igetTextContents()zwracają treści dostępne na stronie. Możesz używać treści do celów związanych z ułatwieniami dostępu i komunikatami TalkBack lub w funkcjach opartych na AI, takich jak generowanie podsumowania strony.Interfejs API
PdfRenderer.Page#selectContentwybiera treści dostępne na stronie. Wybrane treści możesz wykorzystać do takich działań jak:- Zadzwoń, jeśli numer telefonu
- Mapy, jeśli wybrano adres.
- Kopiuj
- Udostępnij
- Komentarze
Zgodność
Klasa PdfRendererPreV udostępnia interfejsy API Androida V w Androidzie w wersjach od R do U (poziomy interfejsu API 30–34).
Dodatkowe materiały
Więcej informacji o dodawaniu przeglądarki plików PDF do aplikacji znajdziesz w artykule Implementowanie przeglądarki plików PDF.