PDF Reader Pro logo

PDF Reader Pro app

Modern PDF Viewer for Android

github.com/ahmmedrejowan/PdfReaderPro

stars193forks37releasev2.6.0licenseGPL-3.0requiresAPI 24downloads317

Screenshots

10 images, scroll sideways, open one to use the arrow keys

About

A feature-rich, privacy-focused PDF app built with Jetpack Compose and Material 3. View, edit, and manage PDFs with 12 powerful tools including merge, split, compress, rotate, lock/unlock, and more. Supports bookmarks, table of contents, full-text search, and auto-scroll for hands-free reading. 100% offline with no ads or tracking.

  • Jetpack Compose
  • Kotlin
  • Koin
  • Ktor Client
  • Room Database
  • PDF.js
  • iTextPdf

Features

  • PDF Viewing - Smooth rendering with zoom, scroll, and page navigation
  • 12 PDF Tools - Merge, split, compress, rotate, reorder, remove pages, add page numbers, watermark, lock/unlock, PDF to images, images to PDF
  • Bookmarks - Save and manage bookmarks within documents
  • Table of Contents - Navigate using document outlines
  • Search - Full-text search within documents
  • Auto-Scroll - Hands-free reading with adjustable speed
  • File Management - Browse, search, sort, and organize PDFs
  • Recent & Favorites - Quick access to your files
  • Material 3 Design - Modern UI with dark mode and dynamic colors
  • 100% Offline - Complete privacy, no ads, no tracking

Tech details

Component Technology
Language Kotlin (100%)
UI Framework Jetpack Compose
Design System Material Design 3
Architecture Clean Architecture + MVVM
Dependency Injection Koin
Database Room
Preferences DataStore
PDF Rendering Custom PDF.js WebView
PDF Processing iText 7
Navigation Jetpack Navigation Compose
Async Kotlin Coroutines + StateFlow
Image Loading Coil
Animations Lottie
Logging Timber

Requirements:

  • Minimum SDK: API 24 (Android 7.0)
  • Target SDK: API 36 (Android 16)
  • Java: 17
  • Kotlin: 2.3.10

Changelog

  1. v2.6.0

    latest
    • Back to Page
    • Tools from the Reader
    • Hide Hidden Files
    • and 9 more
    Full notes for v2.6.0

    What's New

    Added
    • Back to Page - After Go to page, the contents, a bookmark or a link inside the document, a chip below the top bar takes you back to the page you left (#88)
    • Tools from the Reader - PDF Tools in the reader's More Options opens split, compress, rotate and the other tools on the open document; with Overwrite Original, the tool safely replaces the document itself (#105)
    • Hide Hidden Files - A setting to leave out files and folders whose names start with a dot (#6)
    • Keep Image Colors - In the Dark and Black reading themes, pictures can keep their own colors instead of being inverted; switch it on in Display Settings (#87)
    Changed
    • Short Documents - A document shorter than the screen sits in the middle instead of at the top (#105)
    Fixed
    • First Page Under the Top Bar - On lower-density screens the first page no longer starts under the top bar, and the last one scrolls clear of the controls (#105)
    • Jumps Under the Top Bar - Go to page, the contents, bookmarks and links inside a document no longer land under the top bar (#105)
    • Overwrite Original - Tools that overwrite the original no longer hold up the screen on large files, and a failed write leaves the original as it was
    • Signed Files in Other Apps - A PDF with signatures saved into it no longer disappears from other apps' file pickers
    • Counts for One - Page, file and highlight counts read correctly for a single item ("1 page" instead of "1 pages"), in every language
    • Back in Landscape - Back closes the side panels in landscape instead of leaving the screen behind them, which in the reader closed the document
    • Merge Retry - Retry appears after a failed merge in every language, and no longer after a notice about a skipped file

    What's Changed

    • Fixes since 2.5.0, release workflow hardening, and PR checks by @ahmmedrejowan in #102
    • 2.6.0: Back to Page, tools from the reader, image colors and fixes by @ahmmedrejowan in #106
    v2.6.0 on GitHub ↗
  2. v2.5.0

    • Signatures
    • Translations
    • App Language
    • and 13 more
    Full notes for v2.5.0

    What's New

    Added
    • Signatures - Sign a document by drawing, typing or picking an image of your signature, from the reader or from Tools; signatures are kept per document, managed from one sheet, and written into the file after a confirmation or saved into a copy
    • Translations - Bangla, Russian, German, Spanish, French, Italian, Portuguese, Turkish, Polish, Irish and Japanese (#91, #93, #95, #98)
    • App Language - Choose the app's language in Settings on any Android version; on Android 13 and later it stays in step with the system's per-app language setting
    • Translate Selected Text - Translators and other text apps, such as Google Translate, appear in the text selection menu (closes #78)
    • Print Progress - Printing shows how far the pages have been prepared
    • Save a Copy Without the Password - Save an unprotected copy of a password-protected document from the reader
    • Crash Details - The crash screen shows the full details and can copy them, share them, or open a GitHub issue with the bug form filled in
    Changed
    • Dates - Dates and times follow the app's language
    • Update Notes - The update screen shows only what's new, formatted
    • Libraries - Updated Gradle 9.8.0, AGP 9.4.1, Kotlin 2.4.20, Compose BOM 2026.09.00, iText 9.8.0 and BouncyCastle 1.86
    Fixed
    • Japanese, Chinese and Korean PDFs - Documents that need character maps, such as many Japanese, Chinese and Korean files, now open instead of showing an error (closes #89)
    • Document Info in Landscape - Document Info and File Info no longer crash in landscape (closes #80)
    • Menu Button - The page slider no longer covers the reader's ⋮ button (closes #79)
    • Crash Screen - The crash screen now appears after any crash instead of the app freezing
    • Try Again - Try Again on the reader's error screen opens the document again
    • Settings in Your Language - Scroll mode, reading theme and the update interval in Settings are shown in the app's language instead of English

    What's Changed

    • Add localization: ru, de by @4kvoodoo in #91
    • Merge feature into master: signatures, ru/de localization, dependency updates by @ahmmedrejowan in #92
    • Add Spanish and French localization (es, fr) by @4kvoodoo in #93
    • Merge feature into master: Spanish and French, localized dates, translation fixes by @ahmmedrejowan in #94
    • Crash screen that works after any crash, GitHub report link, and CI hang fixes by @ahmmedrejowan in #96
    • Add Italian & Portuguese translations + localized READMEs (ru, de, es, fr, it, pt) by @4kvoodoo in #95
    • Open PDFs that need character maps, working Try Again, Italian and Portuguese by @ahmmedrejowan in #97
    • Release 2.5.0, with releases driven by CHANGELOG.md by @ahmmedrejowan in #99
    • TranslationAdd Turkish, Polish, Irish and Japanese translations (tr, pl, ga, ja) by @4kvoodoo in #98
    • Finish 2.5.0: four more languages, translation fixes, version check by @ahmmedrejowan in #100
    • Language setting in the app, and Bangla by @ahmmedrejowan in #101

    New Contributors

    • @4kvoodoo made their first contribution in #91
    v2.5.0 on GitHub ↗
  3. v2.4.0

    • Highlight anything
    • Highlights panel
    • Jump and step
    • and 4 more
    Full notes for v2.4.0

    What's New

    Highlights

    Highlight text in your PDFs, and find it again later.

    • Highlight anything - Select text and pick a colour from the bar that appears just below it. Five colours, one tap, and the usual Copy and Translate menu is still there.
    • Highlights panel - Every highlight in one list with its text, page and colour. Search it, or filter by colour to keep categories apart.
    • Jump and step - Tap an entry to go straight to it, then use next/previous to move through the rest in reading order.
    • Search knows about them - While searching a PDF, the search bar shows how many of the matches you have already highlighted, and tapping that opens the panel filtered to the same words.
    • Save a copy with highlights - Writes them into a new PDF as real annotations, so they show up in other PDF readers too. Your original file is never changed.
    • Highlights already in a file - Highlights a PDF came with, whether from this app or another one, are now listed and searchable as well. They are read only, since changing them would mean rewriting your document.
    Reader
    • Lock horizontal scroll - Holds the page where you put it when zoomed in, so it stops drifting sideways as you read down. Remembered per document, and found under View Options.

    What's Changed

    • docs: add v2.3.0 to README changelog by @ahmmedrejowan in #61
    • Add Product Hunt badge to README by @ahmmedrejowan in #63
    • feat: tap-to-turn-page navigation for the reader by @ahmmedrejowan in #64
    • Highlights, per-document scroll lock, viewer hardening by @ahmmedrejowan in #75
    • Prepare 2.4.0 release by @ahmmedrejowan in #76
    v2.4.0 on GitHub ↗
  4. v2.3.0

    • Page Slider on Scroll
    • In-PDF Search
    • Dependencies
    • and 1 more
    Full notes for v2.3.0

    What's New

    ✨ Added
    • Page Slider on Scroll — a new setting in the View Mode sheet controls whether the page slider appears while scrolling when the toolbar is hidden. Off by default, so the reading view stays clean (#54).
    🔧 Improved
    • In-PDF Search — search now steps through every match across all pages reliably, and the active match is centered in the view (#40).
    • Dependencies — updated to Kotlin 2.4.10, AGP 9.2.1, Android SDK 37, Compose BOM, and other core libraries.
    🐛 Fixed
    • PDF open failure — PDFs whose file path contained an apostrophe no longer get stuck on the loading screen (#57).

    What's Changed

    • Reader fixes, page-slider toggle, and dependency updates by @ahmmedrejowan in #59
    • chore: prepare 2.3.0 release by @ahmmedrejowan in #60
    v2.3.0 on GitHub ↗
  5. v2.2.0

    • AMOLED Black Theme
    • Customizable Double-Tap Zoom
    • Focal-Point Double-Tap
    • and 5 more
    Full notes for v2.2.0

    What's New

    Added
    • AMOLED Black Theme - True-black variant under Appearance → Theme for OLED displays
    • Customizable Double-Tap Zoom - Slider in Settings and the reader's zoom sheet sets the zoom level applied on double-tap (1.1×–5×) (closes #42)
    • Focal-Point Double-Tap - Double-tap now zooms around the tapped location instead of anchoring to the top-left; zoom-out preserves the focal point as well (closes #42)
    • Hide Tools Tab - Setting to remove the Tools tab from the bottom navigation for a reader-only experience
    Changed
    • Reader Sheet Typography - Section headers and chip labels enlarged for legibility; More Options rows given more breathing room (closes #44)
    • Reader Chrome Theming - Top bar, floating control bar, and sidebar now follow the active Material color scheme (fixes reader chrome not adopting Dark/Black themes)
    • Home Bottom Navigation - Selected/unselected text colors now follow the app theme instead of the system theme (fixes invisible text in Black theme)
    Fixed
    • Remember Password - Saved password is now auto-submitted on next open of a locked PDF; stale entries are cleaned up on silent-attempt failure (closes #43)

    What's Changed

    • fix: remove gradle-daemon-jvm.properties by @ahmmedrejowan in #29
    • fix: update F-Droid metadata by @ahmmedrejowan in #30
    • chore: bump dependencies and fix repo language detection by @ahmmedrejowan in #39
    • Release 2.2.0 — focal-point zoom, AMOLED theme, Tools toggle, sheet polish by @ahmmedrejowan in #45
    v2.2.0 on GitHub ↗
see all 11 releases on GitHub ↗

Install

Direct Install:

  1. Download the APK from GitHub Releases
  2. Enable "Install from unknown sources" if prompted
  3. Open the APK to install

Build from Source:

bash
git clone https://github.com/ahmmedrejowan/PdfReaderPro.git
cd PdfReaderPro
./gradlew assembleDebug

Roadmap

  • Annotation support (highlight, underline, notes)
  • Tablet-optimized UI
  • Dark mode optimization

More apps

all apps →
main*Kotlinapps:12 work:3 libraries:5 products:1
© 2026 K M Rejowan AhmmedprivacyAvailable for work