Skip to content

About

PdfCraft for Android: An Android native open-source PDF reader and editor written in Rust

Resources

Stars

237 stars

Watchers

2 watching

Forks

Repository files navigation

PdfCraft's app icon

PdfCraft for Android

An Android native open-source PDF reader and editor written in Rust, built on the same engine as the desktop app, PdfCraft, with a Kotlin/Jetpack Compose UI.
Many credits to the original maintainers, storytold.

Get it on F-Droid Get it on GitHub Get it on Obtainium
Each release has two APKs: the plain one for most phones, the -armeabi-v7a one for 32-bit ARM phones.

Rust engine Kotlin and Jetpack Compose Minimum: Android 10 (API 29) Target: Android 16 (API 36) License: MIT OR Apache-2.0 Status: beta

Reading · Navigate · Comments · Forms & Fill & Sign · Edit PDF · Read aloud · Tools · Home · Light theme · Architecture · Planned features · Building


The PdfCraft Showcase open on its cover: a deep blue and orange gradient with the title Showcase and 'A tour of the page, glyph by glyph.', the page pill at 1, the top bar with back, the Read aloud switch, Find, Share and More, and the quick toolbar: Edit PDF, Comment, Highlight, Draw, Fill & Sign, Export PDF and More tools
The PdfCraft Showcase, a 13-page specimen PDF, open on its cover.


Reading

The Scripts of the World page with the bars hidden: Arabic, Hebrew, Devanagari, Thai, Greek, Cyrillic, Chinese, Korean, IPA, Armenian, Georgian and Tamil samples, vertical Japanese in the margin, mixed-direction text and colour emoji, with the Mathematics page below
Twelve writing systems, vertical Japanese and colour emoji, with the bars hidden by a tap.


Reading Mode on the foreword: the heading Why a specimen? and its paragraphs reflowed in large type to the width of the screen, under the viewer's top bar Night Mode: the Scripts of the World and Mathematics pages shown as light text on black
Reading Mode: text reflowed to the screen Night Mode, from View settings

Navigate long documents

The Pages grid: two columns of page thumbnails numbered 1 to 8, the current page outlined in blue, with Edit PDF and Crop pages in the bar Bookmarks and Table of Contents over the cover: the Contents tab open on the document's outline, from Contents and Why a specimen? to Review and Markup and Interactive Form
Pages: every page at a glance The outline, and bookmarks of your own

Comments

The Review and Markup page with a sticky note selected and ringed in blue, and the comment panel below it: 3 of 17 with arrows, a thread of two comments by PdfCraft Reviewer and Layout Editor, and a Reply box The full-screen comment list titled 17 comment threads, grouped by page: notes, a highlighted phrase with its comment, a threaded note with a reply and a text box, each with Reply
A comment's thread, ‹ 3 of 17 › and Reply The Comment List, by page

Forms & Fill & Sign

The Interactive Form page: text fields, a date, an amount, a multiline comment, checkboxes, radio buttons, a combo box, a multi-select list, a push button and a signature field, every fillable field tinted blue Fill and Sign on the Interactive Form page: a drawn signature placed in the signature field, Done at the top left with undo and redo, and the Sign tool in the bar below
Every fillable field tinted blue Fill & Sign: a signature placed with a tap

Edit PDF

Edit PDF on the Review and Markup page: a paragraph selected in a blue box with round handles, a menu with Edit text, Select all and Delete above it, and the formatting bar below: bold, italic, underline, size, font, colour and alignment
Edit PDF: tap a paragraph to edit its text, change its style, move it or rewrap it.


Read aloud

Read aloud playing on the Code and Images page: the running header washed yellow with the current word stronger, the Read aloud switch turned on, and the player at the bottom with a progress bar, back 15 seconds, pause, forward 15 seconds and 1.0x The full Read aloud player: a picture of the page being read, the file name pdfcraft-showcase, a progress bar with 20:20 and -5:03, back 15 seconds, pause and forward 15 seconds, then Voice and 1.0x
Read aloud, the words marked as they're read The full player: time left, Voice and speed

Tools

The More tools sheet over the Scripts of the World page: Combine files, Compress PDF, Set password, Organize pages, Crop pages, Recognize text, Create PDF, Text, Scan and Read aloud, then Customize toolbar Compress PDF: the file card for pdfcraft-showcase, PDF, 2.8 MB, then High, Medium and Low compression with Medium chosen, and the Compress button
More tools, and Customize toolbar Compress PDF, one of the tools that make a new file

Home

Home: Welcome back, Start with a tool with Open file, Edit PDF, Read aloud, Fill & Sign, Create PDF and Organize pages, then Recent, Starred and On device with application and pdfcraft-showcase listed, the add button, and the Home, Files, Tools and Search tabs The Tools tab: All, Read, Create, Edit and Convert, and cards for Fill & Sign, Add comment, Read aloud, Create PDF, New scan, Combine files, Organize pages, Crop pages, Edit PDF, Compress PDF, Export PDF and Set password
Home: the tools, Recent, Starred and On device The Tools tab: every tool, by what it does

Light theme

The viewer in the light theme on the Scripts of the World page, with the white top bar and quick toolbar Home in the light theme: the tools on pale tiles, Recent with application and pdfcraft-showcase, and the tabs
The viewer in the light theme Home in the light theme

Architecture

Architecture diagram: the PDF user chooses a document in the Android experience (Home library, Open document, App state, PDF viewer, Reading tools, Page navigation, Forms and signing, PDF editing, Comment tools), which calls the Rust engine through the Android engine bridge; the document runtime (PDF engine, page rendering, PDF object parser) and its PDF operations (create and extract, document editing, form handling, annotations) and extended capabilities (accessibility checks, automation tools, office export, PDF signatures)
How the app and the engine fit together. Generated with GitDiagram.


Planned features

PdfCraft for Android is in beta.

Area Status
Open PDFs from files, other apps and Recent; Starred, On device, Files and Search ✅
Reading: continuous and single page, Reading Mode, Night Mode, find, text selection, links, bookmarks and contents, attachments ✅
Read aloud with the phone's voice, the words marked as they're read, and a full player ✅
Comments: notes, voice comments, highlight, underline, strikethrough, drawing (snap to shape), text; the Comment List and threads ✅
Forms, and Fill & Sign: text, marks and a drawn or imported signature; form JavaScript (calculations, field checks, buttons) ✅
Digital signatures: sign with a digital ID (a .p12 / .pfx file, or one made in the app), check a document's signatures, trust signers ✅
Edit PDF: edit text, add text and images, move, resize and turn pictures ✅ · cropping a picture ⬜
Organize and crop pages ✅
Compress, combine, set password, create PDF (images, text, office documents), scan ✅
Export to Word, RTF, Excel, PowerPoint, JPEG and PNG ✅ · Word 97 ⬜
Recognize text ✅ (the Latin alphabet without accents)
A customizable quick toolbar, upright and sideways layouts, light and dark themes ✅
Extra Features in Preferences, off until you turn them on: the status bar in documents ✅
Translations: all of the app's text is ready to translate (how) ✅ · Spanish ✅ · other languages ⬜
AI assistant, cloud storage, sharing for review 🚫 PdfCraft is a local app

✅ works today · 🚧 in progress · ⬜ not started · 🚫 not planned


Building Instructions

One Gradle command builds the whole app: it compiles the Rust engine with cargo-ndk and generates the Kotlin bindings.

  • Clone this repository
  • Make sure you have at least 3 GB of free disk space
  • Recognize text's models (12 MB, CC-BY-SA-4.0) are in assets/models/; apps/pdfcraft-android/fetch-models.sh downloads them again if you need to
  • enter apps/pdfcraft-android/android and run ./gradlew assembleRelease, or open that folder in Android Studio and press Run.

Build time dependencies:

required tools
    rustup (it installs the Rust release and Android targets rust-toolchain.toml names)
    cargo install cargo-ndk --version 4.1.2 --locked
    Android SDK (API 37) and NDK 29.0.14206865
    JDK 17 or newer

Builds are only tested on Windows 11.


Translating

All of PdfCraft's text is in one file: apps/pdfcraft-android/android/app/src/main/res/values/strings.xml. To add a language:

  • copy it to a values-<language> folder beside it: values-es/strings.xml for Spanish, values-pt-rBR/strings.xml for Brazilian Portuguese
  • translate the text between the tags; keep each name, the placeholders (%1$s, %2$d, which you may move) and escapes such as \'
  • leave out anything you haven't translated yet: it shows in English
  • open a pull request

The store listing is in fastlane/metadata/android/en-US/; a copy in a folder for your language (es-ES, pt-BR) translates it too. On Android 13 and newer, PdfCraft's language can be set on its own under Settings ▸ Apps ▸ PdfCraft ▸ Language. A few messages from the PDF engine, such as some errors and the names in Undo, are English for now.


License

MIT OR Apache-2.0, at your option. PdfCraft for Android is not affiliated with Adobe; Acrobat is a trademark of Adobe Inc.


Misc info for myself

Try to use semantic commit messages. Use feat: / fix: / chore: / docs: / etc.

About

PdfCraft for Android: An Android native open-source PDF reader and editor written in Rust

Resources

Stars

237 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages