A living plan for turning ClearPDF into a full, Adobe-class PDF editor that stays 100% offline & privacy-first. No cloud, no accounts, no LLM/network AI — on-device Google ML Kit is used only for the document scanner and on-device OCR text selection.
Legend: ✅ done · 🚧 in progress · ⏳ planned · 💡 idea / stretch
- ✅ Thread-safe
PdfRendererengine (serialized page access — fixed crash/corruption race) - ✅ Page rotation + page-size APIs in the engine
- ✅ Lossless merge / split / extract via PdfBox-Android (no more rasterized, blurry output)
- ✅ Lossless page editor core (reorder / rotate / delete)
- ✅ Conversions core: images → PDF (lossless embed), PDF → text extraction
- ✅ Viewer zoom/pan rewrite — focal-point pinch, correct pan clamping, gesture layer decoupled from the transform; annotations & OCR now align at any zoom
- ✅ New Tools: Organize Pages, Images → PDF, Extract Text
- ⏳ Drag-to-reorder pages in the Organizer (replace up/down buttons; long-press + drag)
- ⏳ Insert pages: append/merge another PDF or images into an existing document
- ⏳ Duplicate page + add blank page in the Organizer
- ⏳ Undo/redo stack shared across annotation + page edits
- ⏳ Save-in-place vs Save-as-copy choice (overwrite original when it's a writable file)
- ⏳ Page thumbnails strip inside the viewer for fast navigation + jump-to-page
- ⏳ Continuous (vertical) scroll reading mode in addition to paged mode
- ⏳ Viewer reflow guard: remember last page & zoom per document
- ⏳ Text box / typewriter tool (add real typed text, font size & color)
- ⏳ Signature tool: draw once, save signatures, stamp onto pages
- ⏳ Sticky notes / comments with a comments panel
- ⏳ Stamps (Approved, Draft, Confidential, date stamp)
- ⏳ Eraser + per-object select/move/delete (currently annotations are append-only)
- ⏳ Ink smoothing for the pen (Catmull-Rom) and pressure-width if available
- ⏳ Persist annotations as real PDF annotations (via PdfBox) instead of flattening only, so they stay editable after save (export-flattened remains an option)
- ⏳ PDF → images (export pages as PNG/JPG to gallery, quality + DPI options)
- ⏳ PDF → long image (stitch pages into one tall PNG for sharing)
- ⏳ Text → PDF screen (paste/type text, choose page size & margins — engine already supports)
- ⏳ Page numbers / Bates numbering stamp
- ⏳ Watermark (text or image, opacity, tiling, diagonal)
- ⏳ Header/footer templates
- ⏳ Crop pages (per-page or apply-to-all crop box)
- ⏳ Rotate-all quick action
- ⏳ Password protect / encrypt + remove password (PdfBox
StandardProtectionPolicy) - ⏳ Flatten (bake annotations/forms) for safe sharing
- ⏳ Redaction tool (truly remove content under a box, not just cover it)
- ⏳ Share sheet integration everywhere + "Open with ClearPDF" as default PDF handler
- ⏳ Print support (Android print framework)
- ⏳ Metadata editor (title/author/keywords) and metadata stripping for privacy
- ⏳ Audit/repair the scanner flow on-device (filters, multi-page, save reliability)
- ⏳ Route scanner output through the lossless
PdfConverter(consistent file sizes) - ⏳ Searchable scans: run ML Kit OCR over scans and embed an invisible text layer (makes scanned PDFs selectable/searchable — fully on-device)
- ⏳ In-viewer find/search (uses the OCR/text layer)
- ⏳ Auto-filter suggestion per page (B&W for text, color for photos)
- 💡 Fill AcroForm fields (text, checkbox, radio, dropdown) and save
- 💡 Detect flat forms and let users add fillable fields
- ⏳ File library / recents with folders, rename, delete, favorites, sort & search
- ⏳ Bookmarks / outline viewer (read the PDF's table of contents; add custom bookmarks)
- ⏳ Tablet / landscape two-pane layout
- ⏳ Per-document dark mode (invert page colors for night reading)
- ⏳ Haptics & motion polish consistent with the liquid-glass language
- ⏳ Accessibility: TalkBack labels, larger-text support, contrast pass
- ⏳ Localization scaffolding (currently
enonly)
- ⏳ Move from
PdfServiceLocatorto a small DI setup (Hilt or manual graph) - ⏳ Centralize the duplicated
createOutputUri/ save logic into one repository - ⏳ Unit tests for
pdf-core(merge/split/editor/converter) on JVM where possible - ⏳ Instrumented tests for the viewer gesture math
- ⏳ CI (GitHub Actions): build + lint on PR
- ⏳ Crash/ANR hardening: large-file rendering, OOM guards, RGB_565 thumbnails
- ⏳ CONTRIBUTING.md, issue/PR templates, screenshots refresh
- Offline & private — no data leaves the device. Ever.
- Lossless by default — preserve text/vectors; only rasterize when a feature requires it.
- One design language — every new screen uses the liquid-glass components.
- Editor, not just viewer — every common Adobe action should have an offline equivalent.