La bibliothèque Jetpack PDF Viewer, basée sur des API de framework, offre une solution performante et prête à l'emploi pour les applications Android liées aux documents PDF.
La bibliothèque de la visionneuse de PDF (androidx.pdf) fournit une UI de visionneuse de PDF intégrable qui permet aux utilisateurs d'effectuer les actions suivantes :
- Ouvrir et afficher des documents PDF
- Rechercher et sélectionner du contenu
- Zoom et défilement
- Enregistrer les annotations de document
- Interagir avec des PDF à l'aide d'un stylet
Vous pouvez créer une expérience PDF complète en intégrant les API de la bibliothèque Jetpack ou en utilisant directement les API du framework.
Bibliothèque Jetpack PDF
La bibliothèque Jetpack PDF fournit la classe PdfViewerFragment qui affiche les documents PDF, y compris les PDF paginés. Chaque page est affichée dans sa propre vue. PdfViewerFragment affiche un bouton d'action flottant pour la prise en charge des annotations et inclut généralement un bouton ou un autre contrôle d'interface utilisateur qui ouvre un menu de recherche.
Pour savoir comment implémenter PdfViewerFragment, consultez Implémenter une visionneuse PDF.
API du framework
La bibliothèque Jetpack utilise des API de framework pour analyser et charger les documents PDF.
PdfRenderer fournit les API de framework de base liées au rendu des PDF.
Avant Android V (niveau d'API 35), les classes PdfRenderer et PdfRenderer.Page fournissaient les API pour la gestion des PDF. Les classes PdfRenderer et PdfRenderer.Page ont été mises à jour dans Android V avec des fonctionnalités PDF avancées.
PdfRenderer
API antérieures à Android V
getPageCount(): obtient le nombre de pages du document.openPage(index: Int): ouvre une page pour le rendu.shouldScaleForPrinting(): indique si le document doit être mis à l'échelle pour l'impression. Tenez compte de ces informations si le document est rendu pour l'impression et que la taille du support cible diffère de la taille de la page.
API ajoutées dans Android V
PdfRenderer(fileDescriptor: ParcelFileDescriptor, params: LoadParams)— Construit une instance. Permet de charger des PDF protégés par un mot de passe.getDocumentLinearizedType(): renvoie le type linéarisé du document pour les PDF de moins de 1 Ko.getPdfFormType(): renvoie le type de formulaire du PDF chargé.write(destination: ParcelFileDescriptor, removePasswordProtection: Boolean): enregistre l'état du document actuellement chargé dans le descripteur de fichier accessible en écriture transmis en tant qu'argument.
PdfRenderer.Page
La classe PdfRenderer.Page représente une page de document PDF à afficher.
API antérieures à Android V
RENDER_MODE_FOR_DISPLAY: mode d'affichage du contenu à l'écran.RENDER_MODE_FOR_PRINT: mode d'affichage du contenu pour l'impression.getIndex(): obtient l'index de la page.getWidth(): obtient la largeur de la page en points (1/72 de pouce).getHeight(): obtient la hauteur de la page en points (1/72 de pouce).render(destination: Bitmap, destClip: Rect?, transform: Matrix?, renderMode: Int): affiche une page dans un bitmap.
API ajoutées dans Android V
applyEdit(editRecord: FormEditRecord): applique unFormEditRecordau PDF.getFormWidgetInfos(): renvoie des informations sur tous les widgets de formulaire de la page.getFormWidgetInfos(types: IntArray): renvoie des informations sur tous les widgets de formulaire des types spécifiés sur la page.getFormWidgetInfoAtIndex(widgetIndex: Int): renvoie des informations sur le widget identifié par l'argumentwidgetIndex.fun getFormWidgetInfoAtPosition(x: Int, y: Int): renvoie des informations sur le widget au point donné.getGotoLinks(): récupère les signets et les liens "Aller à" présents sur la page d'un document PDF.getImageContents(): renvoie une liste desPdfPageImageContenttrouvés sur la page.getLinkContents(): obtient les limites et les URL de tous les liens sur la page.getTextContents(): renvoie une liste dePdfPageTextContentsur la page.render(destination: Bitmap, destClip: Rect?, transform: Matrix?, params: RenderParams): affiche une page dans un bitmap.searchText(query: String): recherche la chaîne donnée sur la page et renvoie les limites de toutes les correspondances.selectContent(start: SelectionBoundary, stop: SelectionBoundary): renvoie unePageSelectionreprésentant le contenu entre les deux limites.
Utilisation de l'API
L'API
PdfRenderer#write()écrit une version du PDF chargé dans unParcelFileDescriptor. Voici quelques cas d'utilisation :- Enregistrer une copie du document PDF après avoir supprimé la protection par mot de passe
- Enregistrer des modifications (annotations, remplissage de formulaires, etc.)
Les API
PdfRenderer.Page#render()affichent une page ou une partie d'une page dans un bitmap. En cas de zoom, l'API peut également être utilisée pour afficher une partie de la page dans un bitmap d'une taille donnée.Les API
PdfRenderer.PagegetImageContents(),getLinkContents()etgetTextContents()renvoient le contenu disponible sur la page. Vous pouvez utiliser le contenu pour les annonces d'accessibilité et TalkBack, ou dans les fonctionnalités optimisées par l'IA, comme la génération d'un résumé de la page.L'API
PdfRenderer.Page#selectContentsélectionne le contenu disponible sur une page. Vous pouvez utiliser le contenu sélectionné pour effectuer des actions telles que :- Appeler, si un numéro de téléphone
- Ouvrir Maps si une adresse est sélectionnée
- Copier
- Partager
- Commentaires
Compatibilité
La classe PdfRendererPreV expose les API V Android sur Android R à U (niveaux d'API 30 à 34).
Ressources supplémentaires
Consultez Implémenter un lecteur PDF pour découvrir comment ajouter un lecteur PDF à votre application.