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.1.tar.gz (89.3 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.1-py3-none-any.whl (59.5 kB view details)

Uploaded Python 3

File details

Details for the file pdf_editor_offline-2.0.1.tar.gz.

File metadata

  • Download URL: pdf_editor_offline-2.0.1.tar.gz
  • Upload date:
  • Size: 89.3 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.1.tar.gz
Algorithm Hash digest
SHA256 f3e28c927d90e69a2c7ea7ace815fc97c7c08db83ec541c5bd9edc80a2d39d18
MD5 659f74311d28e332a0a71de36a239e6c
BLAKE2b-256 77bcab5eb48f4465c7e6124ca88bba769bf2835d83be9f5dbd87cbd92033f5f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pdf_editor_offline-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 44745755c62db706b72b3091ef4ec967234355538bc6123445067a0952008219
MD5 6f38ce91faee031b8b3a6331342c0e9c
BLAKE2b-256 4ab4a040c7acd663948513e2ca0c449a3aa83cbf639cfead62a71c77e0362001

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