Metadata-Version: 2.4
Name: astrapdf
Version: 0.1.1
Summary: A private, local-first PDF toolkit and browser studio
Project-URL: Homepage, https://github.com/vivek19398/AstraPDF
Project-URL: Repository, https://github.com/vivek19398/AstraPDF
Project-URL: Issues, https://github.com/vivek19398/AstraPDF/issues
Author: AstraPDF contributors
License-Expression: MIT
License-File: LICENSE
Keywords: local,merge,ocr,pdf,pdf-editor,private
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Multimedia :: Graphics :: Editors
Requires-Python: >=3.10
Requires-Dist: cryptography<47,>=43
Requires-Dist: fastapi<1,>=0.115
Requires-Dist: pillow<13,>=10.0
Requires-Dist: pypdf<7,>=5.0
Requires-Dist: pypdfium2<6,>=4.30
Requires-Dist: pytesseract<1,>=0.3.13
Requires-Dist: python-multipart<1,>=0.0.12
Requires-Dist: reportlab<5,>=4.2
Requires-Dist: uvicorn[standard]<1,>=0.30
Provides-Extra: dev
Requires-Dist: build<2,>=1.2; extra == 'dev'
Requires-Dist: twine<7,>=5; extra == 'dev'
Description-Content-Type: text/markdown

# AstraPDF

A local-first PDF toolkit with a Python API and browser-based desktop studio. PDF files remain on the machine running the library; the web UI binds to localhost by default.

## Install and launch

```bash
python -m pip install astrapdf
astrapdf
```

Open the local address printed by the command. AstraPDF asks the operating system for an available port by default, so it can run even when another app is using a common port. To choose a specific port: `astrapdf --port 9000`. Do not expose this development server directly to the internet. The default listener is loopback only.

## Python API

```python
from pathlib import Path
from pdfstudio import PDFStudio

studio = PDFStudio()
merged = studio.merge(["cover.pdf", "report.pdf", "photo.png"])
Path("combined.pdf").write_bytes(merged)

pages = studio.extract("combined.pdf", [0, 2, 3])
Path("selection.pdf").write_bytes(pages)
```

Inputs can be paths, bytes, or binary file objects. Document methods return PDF bytes unless documented otherwise; all page indices in the library are zero-based.

See the feature table below for implemented operations and boundaries. Whiteout overlays are visual covers and do not remove underlying PDF text. Permanent redaction is available in the browser studio: it rasterizes every page into a fresh PDF, paints over selected regions, and drops searchable text, forms, links, annotations, and source metadata. Review the output carefully before sharing; redaction is irreversible in that output.

## License and PDF compatibility

The Python package is MIT licensed. PDFium is distributed in the pypdfium2 wheels under its upstream BSD-style license; see the installed dependency's third-party notices. OCR also requires the Tesseract executable to be installed separately; `pip` installs AstraPDF's Python dependencies, but cannot install that operating-system program. Supported behavior follows the file format and versions of the bundled libraries. Digital signing, general damaged-PDF repair, and XFA forms are not included.
