Android PDF-Viewer

Die Jetpack PDF Viewer-Bibliothek, die auf Framework-APIs basiert, bietet eine sofort einsatzbereite, leistungsstarke Lösung für Anwendungen, die PDF-Dokumente auf Android verarbeiten.

Die PDF-Viewer-Bibliothek (androidx.pdf) bietet eine einbettbare PDF-Viewer-Benutzeroberfläche, mit der Nutzer Folgendes tun können:

  • PDF-Dokumente öffnen und ansehen
  • Inhalte suchen und auswählen
  • Zoomen und scrollen
  • Dokumentanmerkungen speichern
  • Mit einem Eingabestift mit PDFs interagieren

Sie können eine umfassende PDF-Funktionalität erstellen, indem Sie die APIs der Jetpack-Bibliothek einbinden oder die Framework-APIs direkt verwenden.

Jetpack PDF-Bibliothek

Die Jetpack-PDF-Bibliothek bietet die Klasse PdfViewerFragment, mit der PDF-Dokumente gerendert werden können, einschließlich paginierter PDFs. Jede Seite wird in einer eigenen Ansicht gerendert. PdfViewerFragment zeigt eine unverankerte Aktionsschaltfläche für Anmerkungen an und enthält in der Regel eine Schaltfläche oder ein anderes UI-Steuerelement, mit dem ein Suchmenü geöffnet wird.

Informationen zur Implementierung von PdfViewerFragment finden Sie unter PDF-Viewer implementieren.

Framework-APIs

Die Jetpack-Bibliothek verwendet Framework-APIs zum Parsen und Laden von PDF-Dokumenten. PdfRenderer bietet die grundlegenden Framework-APIs für das Rendern von PDFs.

Vor Android V (API-Level 35) wurden die APIs für die PDF-Verarbeitung von den Klassen PdfRenderer und PdfRenderer.Page bereitgestellt. Die Klassen PdfRenderer und PdfRenderer.Page wurden in Android V mit erweiterten PDF-Funktionen aktualisiert.

PdfRenderer

APIs vor Android V

  • getPageCount(): Ruft die Anzahl der Seiten im Dokument ab.
  • openPage(index: Int): Öffnet eine Seite zum Rendern.
  • shouldScaleForPrinting(): Gibt an, ob das Dokument für den Druck skaliert werden soll. Berücksichtigen Sie diese Informationen, wenn das Dokument für den Druck gerendert wird und sich die Zielmediengröße von der Seitengröße unterscheidet.

In Android V hinzugefügte APIs

  • PdfRenderer(fileDescriptor: ParcelFileDescriptor, params: LoadParams) – Erstellt eine neue Instanz. Unterstützt das Laden von passwortgeschützten PDFs.
  • getDocumentLinearizedType(): Gibt den linearisierten Typ des Dokuments für PDFs zurück, die kleiner als 1 KB sind.
  • getPdfFormType(): Gibt den Formulartyp des geladenen PDF zurück.
  • write(destination: ParcelFileDescriptor, removePasswordProtection: Boolean): Speichert den Status des aktuell geladenen Dokuments im beschreibbaren Dateideskriptor, der als Argument übergeben wird.

PdfRenderer.Page

Die Klasse PdfRenderer.Page stellt eine Seite eines PDF-Dokuments für das Rendern dar.

APIs vor Android V

  • RENDER_MODE_FOR_DISPLAY – Modus zum Rendern der Inhalte für die Anzeige auf einem Bildschirm.
  • RENDER_MODE_FOR_PRINT: Modus zum Rendern der Inhalte für den Druck.
  • getIndex(): Ruft den Seitenindex ab.
  • getWidth(): Ruft die Seitenbreite in Punkten (1/72 Zoll) ab.
  • getHeight(): Ruft die Seitenhöhe in Punkten (1/72 Zoll) ab.
  • render(destination: Bitmap, destClip: Rect?, transform: Matrix?, renderMode: Int): Rendert eine Seite als Bitmap.

In Android V hinzugefügte APIs

  • applyEdit(editRecord: FormEditRecord): Wendet ein FormEditRecord auf das PDF an.
  • getFormWidgetInfos(): Gibt Informationen zu allen Formular-Widgets auf der Seite zurück.
  • getFormWidgetInfos(types: IntArray): Gibt Informationen zu allen Formular-Widgets der angegebenen Typen auf der Seite zurück.
  • getFormWidgetInfoAtIndex(widgetIndex: Int): Gibt Informationen zum Widget zurück, das durch das Argument widgetIndex angegeben wird.
  • fun getFormWidgetInfoAtPosition(x: Int, y: Int): Gibt Informationen zum Widget am angegebenen Punkt zurück.
  • getGotoLinks() – Ruft Lesezeichen und „Gehe zu“-Links ab, die auf der Seite eines PDF-Dokuments vorhanden sind.
  • getImageContents(): Gibt eine Liste der auf der Seite gefundenen PdfPageImageContent zurück.
  • getLinkContents(): Ruft die Grenzen und URLs aller Links auf der Seite ab.
  • getTextContents() – Gibt eine Liste von PdfPageTextContent auf der Seite zurück.
  • render(destination: Bitmap, destClip: Rect?, transform: Matrix?, params: RenderParams): Rendert eine Seite als Bitmap.
  • searchText(query: String): Durchsucht die Seite nach dem angegebenen String und gibt die Grenzen aller Übereinstimmungen zurück.
  • selectContent(start: SelectionBoundary, stop: SelectionBoundary): Gibt einen PageSelection zurück, der den Inhalt zwischen den beiden Grenzen darstellt.

API-Nutzung

  • Die PdfRenderer#write() API schreibt eine Version des geladenen PDFs in eine ParcelFileDescriptor. Anwendungsfälle:

    • Kopie des PDF-Dokuments nach dem Entfernen des Passwortschutzes speichern
    • Änderungen speichern (Anmerkungen, Formular ausfüllen usw.)
  • Mit den PdfRenderer.Page#render() APIs wird eine Seite oder ein Teil einer Seite als Bitmap gerendert. Bei Zoom kann die API auch verwendet werden, um einen Teil der Seite in ein Bitmap einer bestimmten Größe zu rendern.

  • Die PdfRenderer.Page-APIs getImageContents(), getLinkContents() und getTextContents() geben die auf der Seite verfügbaren Inhalte zurück. Sie können die Inhalte für Bedienungshilfen und TalkBack-Ankündigungen oder in KI-basierten Funktionen wie dem Generieren einer Zusammenfassung der Seite verwenden.

  • Mit der PdfRenderer.Page#selectContent API werden Inhalte ausgewählt, die auf einer Seite verfügbar sind. Sie können die ausgewählten Inhalte für Aktionen wie die folgenden verwenden:

    • Anrufen, wenn eine Telefonnummer
    • Maps öffnen, wenn eine Adresse ausgewählt ist
    • Kopieren
    • Teilen
    • Kommentare

Kompatibilität

Die Klasse PdfRendererPreV macht die Android V-APIs unter Android R bis U (API-Level 30–34) verfügbar.

Zusätzliche Ressourcen

Informationen zum Hinzufügen eines PDF-Viewers zu Ihrer App