Offline PDF editing, conversion, privacy cleanup, and CLI automation
Project description
PDF Editor Offline
A free PDF editor that runs on your machine. No account, no upload step, no cloud storage.
Project Site
Open the live project site: PDF Editor Offline Project Site.
The self-contained local copy lives at site/index.html. It includes product docs, screenshots, sample PDFs, API/CLI notes, and release checks.
PDF Editor Offline gives you a web app, API server, CLI, and Python package for common PDF work:
- Edit pages, annotations, images, metadata, watermarks, and signatures
- Merge, split, rotate, crop, resize, compress, repair, protect, and unlock PDFs
- Convert PDF to Word, PowerPoint, Excel, JPG, Markdown, TXT, EPUB, SVG, and PDF/A
- Convert Word, PowerPoint, Excel, Markdown, TXT, CSV, JSON, HTML, and images to PDF
- Clean metadata, remove hidden data, redact page areas, and clear app temp files
- Run OCR and batch jobs locally
Screenshots
Captured from the local web app with the sample PDFs in examples/sample_pdfs/.
| Editor workspace | Text search and redaction |
|---|---|
| File attachments | Merge PDFs |
|---|---|
More captures are in screenshots/, including image insertion, privacy cleanup, and PDF-to-TXT conversion.
Install
Install the published Python package and CLI from PyPI:
pip install pdf-editor-offline
Verify the install:
pdf-editor-offline --version
python -c "import pdf_editor_offline; print(pdf_editor_offline.__version__)"
From source:
git clone https://github.com/OthmaneBlial/pdf-editor-offline.git
cd pdf-editor-offline
pip install -e ".[dev]"
The PyPI package includes the Python API and CLI. Run the full local web app from a source checkout because the frontend is a separate React application.
Docker:
docker pull othmaneblial/pdf-editor-offline
docker run -p 8000:8000 othmaneblial/pdf-editor-offline
Run The App
Start the backend and frontend together:
./start.sh
Open http://localhost:3000.
Manual startup:
PYTHONPATH=. python -m uvicorn api.main:app --host 0.0.0.0 --port 8000 --reload
cd frontend
npm install
VITE_API_BASE_URL="http://localhost:8000" npm run dev -- --port 3000
CLI
pdf-editor-offline --version
pdf-editor-offline extract text input.pdf
pdf-editor-offline extract images input.pdf --output-dir ./images
pdf-editor-offline edit metadata input.pdf title "Quarterly Report"
pdf-editor-offline edit delete-page input.pdf 0 --output output.pdf
pdf-editor-offline inspect object-tree input.pdf
pdf-editor-offline add image input.pdf stamp.png 0 100 120 180 80 --output stamped.pdf
Python
from pdf_editor_offline import PDFConverter, PDFManipulator
converter = PDFConverter()
converter.pdf_to_word("input.pdf", "output.docx")
manipulator = PDFManipulator()
manipulator.merge_pdfs(["file1.pdf", "file2.pdf"], "merged.pdf")
Develop
pip install -e ".[dev]"
pytest
Frontend:
cd frontend
npm install
npm test
Full local check:
./run_ci.sh
Release checklist:
pytest
cd frontend && npm test && npm run build
docker build -t pdf-editor-offline .
python -m build
Release Notes
See CHANGELOG.md for public release history.
Sample PDFs
Small demo PDFs live in examples/sample_pdfs/:
demo-basic.pdffor page editing, annotations, and exportsdemo-redaction.pdffor permanent redaction checksdemo-privacy.pdffor metadata and hidden-data cleanup
Project Layout
api/ FastAPI app
frontend/ React app
pdf_editor_offline/ Python package and CLI
examples/ Example scripts
examples/sample_pdfs/ Small local demo PDFs
tests/ Integration tests
License
MIT. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pdf_editor_offline-2.0.0.tar.gz.
File metadata
- Download URL: pdf_editor_offline-2.0.0.tar.gz
- Upload date:
- Size: 89.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2040464ad0c8f958f3e5467bf0c927343fd3698eae430249f6159391258063e
|
|
| MD5 |
461d2d19fd1bdf4a2abce224b02e41aa
|
|
| BLAKE2b-256 |
50811d1c96cd077cc1ac22bbae87efc62a812a3eadd3898943b0bd0f6d09b223
|
File details
Details for the file pdf_editor_offline-2.0.0-py3-none-any.whl.
File metadata
- Download URL: pdf_editor_offline-2.0.0-py3-none-any.whl
- Upload date:
- Size: 59.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7081f347e3ad3a13a0b6297fc0cac56f953b8fb15606dbc1ec34b9a93472926b
|
|
| MD5 |
1bf2c283f9dcc7a1bec4fa43fb38932e
|
|
| BLAKE2b-256 |
723fd2bd5a8616376ad22c5ba94eb393b5c477f5a45e89cdb534e75ce8a48ccd
|