Skip to main content

Offline PDF editing, conversion, privacy cleanup, and CLI automation

Project description

PDF Editor Offline

PDF Editor Offline

A free PDF editor that runs on your machine. No account, no upload step, no cloud storage.

GitHub stars MIT License PyPI version Python versions

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
Editor workspace showing demo PDF Text search, font analysis, and permanent redaction
File attachments Merge PDFs
File attachment added in the annotations tool PDF merge completed successfully

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.pdf for page editing, annotations, and exports
  • demo-redaction.pdf for permanent redaction checks
  • demo-privacy.pdf for 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdf_editor_offline-2.0.0.tar.gz (89.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pdf_editor_offline-2.0.0-py3-none-any.whl (59.5 kB view details)

Uploaded Python 3

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

Hashes for pdf_editor_offline-2.0.0.tar.gz
Algorithm Hash digest
SHA256 e2040464ad0c8f958f3e5467bf0c927343fd3698eae430249f6159391258063e
MD5 461d2d19fd1bdf4a2abce224b02e41aa
BLAKE2b-256 50811d1c96cd077cc1ac22bbae87efc62a812a3eadd3898943b0bd0f6d09b223

See more details on using hashes here.

File details

Details for the file pdf_editor_offline-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pdf_editor_offline-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7081f347e3ad3a13a0b6297fc0cac56f953b8fb15606dbc1ec34b9a93472926b
MD5 1bf2c283f9dcc7a1bec4fa43fb38932e
BLAKE2b-256 723fd2bd5a8616376ad22c5ba94eb393b5c477f5a45e89cdb534e75ce8a48ccd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page