Product overview for users and GitHub. For API details see the tables at the end and ARCHITECTURE.md.
| Type | Extensions |
|---|---|
.pdf |
|
| Images | .jpg, .jpeg, .png |
| Outlook email | .msg |
| Microsoft Word | .doc, .docx |
| Rich Text | .rtf |
| OpenDocument | .odt |
| Plain text | .txt, .csv, .log, .md |
Validation on upload: extension, magic bytes / heuristics, consistency checks, per-file size limit (default 50 MB).
Strong differentiator vs generic PDF utilities:
- Import Outlook
.msg - Preserve email formatting
- Include attachments automatically
- Body + attachments become pages in the queue / final PDF
- Drag & drop and reorder
- Merge multiple files and mixed types into one PDF
- Page-by-page organization (remove a page or a whole file)
- Rotate, delete, crop
- Redact (white-out rectangles)
- Zoom
- Split by page ranges
- Page or full document
- Searchable PDF output
- Deskew
- Language:
PDF_EDITOR_OCR_LANG(defaulteng) - Handwriting / wet-ink signatures are usually not recognized well
| Option | Default | Effect |
|---|---|---|
| Grayscale | ON | Smaller / consistent scans |
| Light cleanup | ON | Drop near-blank pages + light compaction |
| Edge detect | OFF | Auto-crop borders (OpenCV); manual crop also available in editor |
- Single merged PDF
- Split by ranges → multiple PDFs
- Download or browser Save As (File System Access API when available)
- 100% self-hosted — no cloud upload
- Docker Compose → http://localhost:8080
- Optional token auth hook (
PDF_EDITOR_AUTH_ENABLED) - UI i18n: English (default) + Spanish
Offices, healthcare, accounting, legal, public administration, and any team processing large document volumes on a private network.
| Method | Path | Description |
|---|---|---|
| GET | / |
UI |
| GET | /api/health |
Healthcheck |
| GET | /api/session |
Current items |
| POST | /api/upload |
multipart files |
| POST | /api/reorder |
{ "order": ["id", ...] } |
| DELETE | /api/items/<id> |
Remove item |
| POST | /api/clear |
Clear session |
| POST | /api/combine |
Build output PDF |
| GET | /api/download |
Download output |
| … | /api/output/* |
Editor ops (rotate, crop, OCR, split, …) |
See routes in app/routes.py for the full surface.