La libreria del visualizzatore PDF Jetpack, supportata dalle API del framework, offre una soluzione pronta all'uso e performante per le applicazioni correlate ai documenti PDF su Android.
La libreria del visualizzatore PDF (androidx.pdf) fornisce un'interfaccia utente del visualizzatore PDF incorporabile che consente agli utenti di eseguire le seguenti operazioni:
- Aprire e visualizzare documenti PDF
- Cercare e selezionare contenuti
- Zoom e scorrimento
- Salvare le annotazioni del documento
- Interagire con i PDF utilizzando uno stilo
Puoi creare un'esperienza PDF completa integrando le API della libreria Jetpack o utilizzando direttamente le API del framework.
Libreria Jetpack PDF
La libreria Jetpack PDF fornisce la classe PdfViewerFragment
che esegue il rendering dei documenti PDF, inclusi i PDF impaginati. Ogni pagina viene
visualizzata in una visualizzazione separata. PdfViewerFragment mostra un Floating Action Button
per il supporto delle annotazioni e in genere include un pulsante o un altro controllo dell'interfaccia utente che
apre un menu di ricerca.
Per scoprire come implementare PdfViewerFragment, consulta
Implementare un visualizzatore PDF.
API Framework
La libreria Jetpack utilizza le API del framework per analizzare e caricare i documenti PDF.
PdfRenderer fornisce le API di base del framework relative al rendering PDF.
Prima di Android V (livello API 35), le classi PdfRenderer e
PdfRenderer.Page fornivano le API per la gestione dei PDF. Le classi PdfRenderer e PdfRenderer.Page sono state aggiornate in
Android V con funzionalità PDF avanzate.
PdfRenderer
API precedenti ad Android V
getPageCount(): restituisce il numero di pagine del documento.openPage(index: Int): apre una pagina per il rendering.shouldScaleForPrinting(): indica se il documento deve essere scalato per la stampa. Tieni conto di queste informazioni se il documento viene visualizzato per la stampa e le dimensioni del supporto di destinazione sono diverse da quelle della pagina.
API aggiunte in Android V
PdfRenderer(fileDescriptor: ParcelFileDescriptor, params: LoadParams)— Costruisce una nuova istanza. Supporta il caricamento di PDF protetti da password.getDocumentLinearizedType(): restituisce il tipo linearizzato di documento per i PDF di dimensioni inferiori a 1 KB.getPdfFormType(): restituisce il tipo di modulo del PDF caricato.write(destination: ParcelFileDescriptor, removePasswordProtection: Boolean): salva lo stato del documento attualmente caricato nel descrittore di file scrivibile passato come argomento.
PdfRenderer.Page
La classe PdfRenderer.Page rappresenta una pagina di un documento PDF per il rendering.
API precedenti ad Android V
RENDER_MODE_FOR_DISPLAY: modalità per il rendering dei contenuti da visualizzare su uno schermo.RENDER_MODE_FOR_PRINT: modalità di rendering dei contenuti per la stampa.getIndex(): recupera l'indice della pagina.getWidth(): restituisce la larghezza della pagina in punti (1/72 di pollice).getHeight(): restituisce l'altezza della pagina in punti (1/72 di pollice).render(destination: Bitmap, destClip: Rect?, transform: Matrix?, renderMode: Int): esegue il rendering di una pagina in una bitmap.
API aggiunte in Android V
applyEdit(editRecord: FormEditRecord): applica unFormEditRecordal PDF.getFormWidgetInfos(): restituisce informazioni su tutti i widget modulo nella pagina.getFormWidgetInfos(types: IntArray): restituisce informazioni su tutti i widget modulo dei tipi specificati nella pagina.getFormWidgetInfoAtIndex(widgetIndex: Int): restituisce informazioni sul widget identificato dall'argomentowidgetIndex.fun getFormWidgetInfoAtPosition(x: Int, y: Int): restituisce informazioni sul widget nel punto specificato.getGotoLinks(): recupera i segnalibri e i link Vai a presenti nella pagina di un documento PDF.getImageContents(): restituisce un elenco diPdfPageImageContenttrovati nella pagina.getLinkContents(): recupera i limiti e gli URL di tutti i link nella pagina.getTextContents(): restituisce un elenco diPdfPageTextContentnella pagina.render(destination: Bitmap, destClip: Rect?, transform: Matrix?, params: RenderParams): esegue il rendering di una pagina in una bitmap.searchText(query: String): cerca la stringa specificata nella pagina e restituisce i limiti di tutte le corrispondenze.selectContent(start: SelectionBoundary, stop: SelectionBoundary)— Restituisce unPageSelectionche rappresenta i contenuti tra i due limiti.
Utilizzo delle API
L'API
PdfRenderer#write()scrive una versione del PDF caricato in unParcelFileDescriptor. I casi d'uso includono quanto segue:- Salvataggio di una copia del documento PDF dopo la rimozione della protezione tramite password
- Salvataggio delle modifiche (annotazioni, compilazione di moduli e così via)
Le API
PdfRenderer.Page#render()eseguono il rendering di una pagina o di una parte di una pagina in una bitmap. In caso di zoom, l'API può essere utilizzata anche per eseguire il rendering di una parte della pagina in una bitmap di una determinata dimensione.Le API
PdfRenderer.PagegetImageContents(),getLinkContents()egetTextContents()restituiscono i contenuti disponibili nella pagina. Puoi utilizzare i contenuti per annunci di accessibilità e TalkBack o in funzionalità basate sull'AI, ad esempio per generare un riepilogo della pagina.L'API
PdfRenderer.Page#selectContentseleziona i contenuti disponibili in una pagina. Puoi utilizzare i contenuti selezionati per azioni come le seguenti:- Chiama, se un numero di telefono
- Maps, se è selezionato un indirizzo
- Copia
- Condividi
- Commenti
Compatibilità
La classe PdfRendererPreV espone le API Android V su
Android R tramite U (livelli API 30-34).
Risorse aggiuntive
Consulta la sezione Implementare un visualizzatore PDF per scoprire come aggiungere un visualizzatore PDF alla tua app.