| Home | Library | Highlight & Select |
|---|---|---|
![]() |
![]() |
![]() |
| Dark Mode | Reader Menu | Share Quotes |
![]() |
![]() |
![]() |
More screenshots are in the MJ PDF Gallery.
Check MJ PDF v3.0.0's Official Release Page
Version 3.0 is the biggest update in MJ PDF's history, closer to a rewrite of the app. The short version:
- A new Home screen with a library, reading statuses, recent files, and a real folder browser.
- Highlight text, add notes, and save them into the PDF.
- Draw handwritten signatures and save them into the PDF.
- Fill PDF forms.
- A new Text Mode that reads like an e-book.
- Turn selected text into a beautiful, shareable quote image.
- Translate selected text and define words with an offline dictionary.
- Dual page mode, RTL reading, hide margins, incognito mode.
- User bookmarks and browser-like navigation history.
- Backup and restore for your data.
- Much faster rendering after rebuilding PDFium for speed.
The full list is in the changelog.
Library
- Home screen with three tabs: Recent, Library, and Folders.
- Continue reading right where you left off, with a detailed reading history.
- Reading statuses: to-read, reading, on-hold, completed, abandoned.
- Cover grid or list view, with adjustable grid size and sorting.
- The Folders tab is a real file manager with breadcrumbs and SD-card support.
- Search every PDF on your device.
- Reading progress and statuses survive file moves and renames.
Reader
- Fast, simple, and very lightweight.
- Dark mode for the app and for the PDF itself.
- True full screen with configurable buttons, reading progress, time, and page info.
- Rotate, brightness bar, auto-scroll with adjustable speed, zoom lock, screenshots.
- Dual page mode that pairs pages like an open book.
- Hide PDF margins to make the page fill your screen.
- Right-to-left reading with automatic detection.
- Open password-protected PDFs and online PDFs through links.
- Share and print PDFs. Open multiple instances at the same time.
- Mouse wheel and mouse button support, volume-key page turning.
Highlights, signatures, and forms
- Highlight text and save the highlights into the PDF file.
- Attach notes to highlights, browse them in My Notes and My Highlights pages.
- Edit highlights that already exist in the document.
- Draw a handwritten signature once, reuse it anywhere, saved as sharp vector strokes.
- Fill PDF forms.
- Select text inline with copy, share, web-search, translate, and dictionary actions.
- Share quotes as images, with the book's name and a choice of themes.
Search and navigation
- Very fast and powerful search with live streaming results.
- Next and previous result navigation from inside the reader.
- A page for the full Table of Contents, with search.
- A page for all the links embedded in the PDF.
- User bookmarks with custom names and chapter context.
- Browser-like back and forward navigation history.
Text Mode
- Read any PDF like an e-book.
- Text reflow, multiple fonts, themes, and adjustable line length.
Privacy
- Open source with total privacy.
- No data collection, no ads, no tracking.
- Incognito mode that saves nothing about what you read.
This app does not collect any data. The following permissions are required to provide specific features in the app:
- Internet: For opening PDFs through links
- Storage / all-files access: For scanning, opening, and managing the PDFs on your device
Exodus privacy reports a tracker in MJ PDF. That is ACRA, the crash reporter, and it does NOT send anything unless you explicitly press SEND on the dialog that appears after a crash. Its configuration is in the code, and there is more detail in the FAQ.
git clone https://gitlab.com/mudlej_android/mj_pdf_reader.git
cd mj_pdf_reader
./gradlew assembleDebugThat is enough for the app itself, since prebuilt native libraries are included.
- To set up a build environment from a fresh Linux install, see SETUP.md.
- To rebuild the native libraries (PDFium, FreeType, libpng, and the JNI bridge), use the scripts in build_dependencies. Since 3.0.0, PDFium is built from source and optimized for speed instead of size, which fixed a years-old rendering slowdown.
- After editing
mainJNILib.cpp, go toPdfiumAndroid/src/main/jniand runndk-build. Every future build will use the generated libs.
The repository is three modules:
| Module | Role |
|---|---|
app |
The MJ PDF application |
AndroidPdfViewer |
MJ PDF's viewer library: rendering, gestures, text selection, highlights |
PdfiumAndroid |
MJ PDF's bindings to the PDFium engine |
- Bugs and requests: open an issue on GitLab. If you do not have a GitLab account, use the GitHub mirror.
- Translations: MJ PDF is available in 15 languages: Arabic, Chinese, Dutch, English, French, German, Hindi, Italian, Persian, Polish, Portuguese (Brazil), Russian, Spanish, Ukrainian and Turkish. To add or improve one, edit
app/src/main/res/values-<lang>/strings.xmland open a merge request.
- MJ PDF is made by Mudlej. The full story is on the official page.
- MJ PDF v1 and v2 were based on PDF Viewer Plus by Gokul Swaminathan (@JavaCafe01), who discontinued his app and recommended MJ PDF as its replacement. The app in v3.0.0 since been entirely rewritten.
- @barteksc wrote the original viewer and PDFium binding libraries that MJ PDF's PDF stack grew from.
- Credits to @Derekelkins for adding the ability to remember the last opened page to the original app.
- Big thanks to Bnyro (LibreTube's dev) for helping me with the colors and the migration to M3. (MJ PDF v2.1)
- Community translators brought the app to 15 languages.
MJ PDF uses the GPLv3 license. The original app (PDF Viewer Plus) was under the MIT license.











