Reading and search
PDF.js loading, virtualized rendering (only visible and adjacent pages), four view modes (continuous / single / double / fit width), eight zoom presets plus rotation, keyboard page-turn, thumbnails, local reading-position restore, on-demand full-text index and highlight.
Annotation
Nine annotation types (highlight / underline / strikethrough / note / text box / rectangle / arrow / freehand / stamp) plus a six-color palette, five stamp templates, real Chinese stamp rendering (Source Han Sans SC + pdf-lib fontkit embedding), grouped summary panel (by type / color / page), and case-material checklist export.
Page organization
Real pdf-lib rewrite: rotate / delete / reorder, multi-select and shift+click range selection, RiskConfirmDialog before delete, placeholder Undo, and default output `*-organized.pdf` that never overwrites the source.
OCR / scans
Real OCR bridge: local ocrmypdf plus cloud PaddleOCR / MinerU. Persistent task queue with startup recovery, four Tauri commands, real lopdf-based scan cleanup, and a 9-state quality check (searchable-page ratio / keyword hit / CER / size ratio / elapsed).
Export
pdf-lib rewrite, form / annotation flatten with dual strategy, text and image watermark, Bates numbering, plain page numbers, A4 evidence image composition, and court-upload compression presets (5/10/20/50 MB Canvas API JPEG DCTDecode real re-encoding with target-size verification).
Forms and signing
AcroForm field detection (text / dropdown / checkbox / radio), fill values, signature images, the FormsPanel overlay, and flatten export (a single failure is wrapped as `failed` and does not abort the rest).
Legal-material friendly
Tailored to the lawyer workflow: long case files, scanned materials, evidence, annotation rollup, page numbering, and signing delivery. High-risk operations save as a new PDF instead of overwriting the source.
Settings and auto-update
Default save directory, OCR provider, privacy confirmation, and redacted API keys. Update checks run through the `tauri-plugin-updater` 10-state machine (with fallback), and the `autoUpdateCheck` setting can disable automatic checks (DEC-056).