github GrapheneOS/PdfViewer 21

latest releases: 23, 22
5 days ago

Notable changes in version 21:

  • increase zoom range to 10x from 1.5x and use a maximum resolution for rendering instead of relying on limited zoom
  • fix orientation of landscape pages
  • add support for PDF outlines
  • integrate support for binary character maps to support legacy PDF character sets at the expense of increasing the app size
  • update pdf.js library to 4.10.38
  • update JavaScript development dependencies
  • update AndroidX Fragment KTX library to 1.8.6
  • update Android Gradle plugin to 8.8.1
  • update Kotlin to 2.1.10
  • use new API for enabling edge to edge to avoid deprecation warning
  • update Gradle to 8.12

A full list of changes from the previous release (version 20) is available through the Git commit log between the releases.


Simple Android PDF viewer based on pdf.js and content providers. The app doesn't require any permissions. The PDF stream is fed into the sandboxed WebView without giving it access to content or files. Content Security Policy is used to enforce that the JavaScript and styling properties within the WebView are entirely static content from the apk assets. It reuses the hardened Chromium rendering stack while only exposing a tiny subset of the attack surface compared to actual web content. The PDF rendering code itself is memory safe with dynamic code evaluation disabled, and even if an attacker did gain code execution by exploiting the underlying web rendering engine, they're within the Chromium renderer sandbox with no access to the network (unlike a browser), files, or other content.


This app is available through the Play Store with the app.grapheneos.pdfviewer.play app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them. Each release is initially pushed out through the Beta channel followed by the Stable channel.

Releases of the app signed by GrapheneOS with the app.grapheneos.pdfviewer id are published in the GrapheneOS App Store which provides fully automatic updates. Each release is initially pushed out through the Alpha channel, followed by the Beta channel and then finally the Stable channel. These releases are also bundled as part of GrapheneOS and published on GitHub.

GrapheneOS users must obtain GrapheneOS app updates through our App Store since verified boot metadata is required for out-of-band system app updates on GrapheneOS as part of extending verified boot to them.

Don't miss a new PdfViewer release

NewReleases is sending notifications on new releases.