Metadata-Version: 2.4
Name: devkit-pdf
Version: 1.0.0
Summary: A complete PDF toolkit for merge, split, compress, rotate, watermark, encrypt, extract, compare, sign, and translate PDFs.
Project-URL: Homepage, https://github.com/pdf-toolkit/pdf-toolkit-pro
Project-URL: Documentation, https://github.com/pdf-toolkit/pdf-toolkit-pro#readme
Project-URL: Repository, https://github.com/pdf-toolkit/pdf-toolkit-pro
Project-URL: Issues, https://github.com/pdf-toolkit/pdf-toolkit-pro/issues
Author: PDF Toolkit Team
License-Expression: MIT
License-File: LICENSE
Keywords: compare,compress,encrypt,extract,merge,pdf,rotate,sign,split,translate,watermark
Classifier: Development Status :: 5 - Production/Stable
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.8
Classifier: Programming Language :: Python :: 3.9
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 :: Graphics Conversion
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Requires-Dist: deep-translator>=1.11.0
Requires-Dist: pikepdf>=8.0.0
Requires-Dist: pymupdf>=1.23.0
Requires-Dist: pypdf>=3.0.0
Description-Content-Type: text/markdown

# PDF Toolkit Pro

A complete PDF toolkit for Python. Merge, split, compress, rotate, watermark, encrypt, extract, compare, sign, and translate PDFs with simple API.

## Installation

```bash
pip install pdf-toolkit-pro
```

## Quick Start

```python
from pdf_toolkit import PDFToolkit

# Initialize with your PDF
pdf = PDFToolkit("input.pdf")

# All operations available as methods
text = pdf.extract_text()
images = pdf.extract_images()
pdf.merge("file2.pdf", output="merged.pdf")
```

## Operations

### Merge PDFs

```python
from pdf_toolkit import merge_pdfs

# Merge multiple PDFs into one
merge_pdfs(["file1.pdf", "file2.pdf", "file3.pdf"], output="merged.pdf")

# Or use the class
pdf = PDFToolkit("file1.pdf")
pdf.merge("file2.pdf", "file3.pdf", output="merged.pdf")
```

### Split PDF

```python
from pdf_toolkit import split_pdf

# Extract specific pages
split_pdf("input.pdf", pages="1-5", output="split.pdf")
split_pdf("input.pdf", pages="1,3,5", output="selected.pdf")
split_pdf("input.pdf", pages="3-10", output="middle.pdf")

# Split into individual pages
pdf = PDFToolkit("input.pdf")
pdf.split_all(output_dir="./pages")
```

### Remove Pages

```python
from pdf_toolkit import remove_pages

# Remove specific pages
remove_pages("input.pdf", pages="1,3,5", output="clean.pdf")
remove_pages("input.pdf", pages="1-5", output="shorter.pdf")
```

### Rotate PDF

```python
from pdf_toolkit import rotate_pdf

# Rotate all pages 90 degrees
rotate_pdf("input.pdf", angle=90, output="rotated.pdf")

# Rotate specific pages
rotate_pdf("input.pdf", angle=180, pages="1,3", output="rotated.pdf")
```

### Compress PDF

```python
from pdf_toolkit import compress_pdf, get_pdf_size

# Check size before
print(get_pdf_size("large.pdf"))  # {'bytes': 5242880, 'formatted': '5.00 MB'}

# Compress
compress_pdf("large.pdf", output="compressed.pdf")

# Check size after
print(get_pdf_size("compressed.pdf"))
```

### Add Watermark

```python
from pdf_toolkit import add_watermark

# Add text watermark
add_watermark("input.pdf", text="CONFIDENTIAL", output="watermarked.pdf")

# Custom style
add_watermark(
    "input.pdf",
    text="DRAFT",
    font_size=72,
    opacity=0.2,
    angle=30,
    output="draft.pdf",
)
```

### Extract Images

```python
from pdf_toolkit import extract_images

# Extract all images from PDF
images = extract_images("input.pdf", output_dir="./images")
print(f"Extracted {len(images)} images")

# Returns list of file paths
# ['./images/page_1_img_1.png', './images/page_2_img_1.jpg', ...]
```

### Extract Text

```python
from pdf_toolkit import extract_text

# Extract all text
text = extract_text("input.pdf")
print(text)

# Extract from specific pages
text = extract_text("input.pdf", pages="1-5")

# Get page count
from pdf_toolkit import get_page_count
count = get_page_count("input.pdf")
```

### Encrypt PDF

```python
from pdf_toolkit import encrypt_pdf

# Add password protection
encrypt_pdf("input.pdf", user_password="secret123", output="encrypted.pdf")

# Different user and owner passwords
encrypt_pdf(
    "input.pdf",
    user_password="read123",
    owner_password="admin456",
    output="encrypted.pdf",
)
```

### Unlock PDF

```python
from pdf_toolkit import unlock_pdf

# Remove password protection
unlock_pdf("encrypted.pdf", password="secret123", output="unlocked.pdf")
```

### Lock PDF (Read-Only)

```python
from pdf_toolkit import lock_pdf

# Lock PDF (users can view but not edit)
lock_pdf("input.pdf", owner_password="admin123", output="locked.pdf")
```

### Convert to Images

```python
from pdf_toolkit import to_images

# Convert all pages to PNG images
images = to_images("input.pdf", output_dir="./pages", dpi=300)
print(f"Generated {len(images)} images")

# Convert to JPEG
images = to_images("input.pdf", output_dir="./pages", dpi=150, fmt="jpg")
```

### Generate Thumbnails

```python
from pdf_toolkit import thumbnail

# Generate small thumbnail images
thumbs = thumbnail("input.pdf", output_dir="./thumbs", dpi=72)
```

### Compare PDFs

```python
from pdf_toolkit import compare_pdfs

# Compare two PDFs
result = compare_pdfs("old_version.pdf", "new_version.pdf")
print(result["summary"])
# "Changes found: 2 page(s) modified, 1 page(s) added"

print(result["pages_modified"])   # [3, 7]
print(result["pages_added"])      # [12]
print(result["pages_removed"])    # []
print(result["pages_identical"])  # [1, 2, 4, 5, 6, 8, 9, 10, 11]
```

### PDF Signature

```python
from pdf_toolkit import sign_pdf, verify_signature

# Add visual signature
sign_pdf(
    "input.pdf",
    output="signed.pdf",
    signature_text="Approved",
    signer_name="John Doe",
    reason="Final approval",
    location="New York",
)

# Verify signature info
info = verify_signature("signed.pdf")
print(info["signed"])     # True
print(info["producer"])   # "PDF Toolkit Pro - Signed by John Doe"
```

### Translate PDF

```python
from pdf_toolkit import translate_pdf

# Translate entire PDF to Spanish
translate_pdf("input.pdf", target_lang="es", output="spanish.pdf")

# Translate to French
translate_pdf("input.pdf", target_lang="fr", output="french.pdf")

# Supported languages: es, fr, de, it, pt, ru, ja, ko, zh-CN, ar, hi, etc.
```

## Full API Reference

### PDFToolkit Class

```python
from pdf_toolkit import PDFToolkit

pdf = PDFToolkit("input.pdf")

# All methods return the output file path (or data)
pdf.merge(*files, output="merged.pdf") -> str
pdf.split(pages="1-5", output="split.pdf") -> str
pdf.split_all(output_dir="./pages") -> list[str]
pdf.remove_pages(pages="1,3", output="output.pdf") -> str
pdf.rotate(angle=90, pages=None, output="rotated.pdf") -> str
pdf.compress(output="compressed.pdf") -> str
pdf.add_watermark(text="DRAFT", output="watermarked.pdf") -> str
pdf.extract_images(output_dir="./images") -> list[str]
pdf.extract_text(pages=None) -> str
pdf.encrypt(password="secret", output="encrypted.pdf") -> str
pdf.unlock(password="secret", output="unlocked.pdf") -> str
pdf.lock(owner_password="admin", output="locked.pdf") -> str
pdf.is_encrypted() -> bool
pdf.to_images(output_dir="./images", dpi=200) -> list[str]
pdf.thumbnail(output_dir="./thumbs", dpi=72) -> list[str]
pdf.compare(other_file="new.pdf") -> dict
pdf.sign(output="signed.pdf", signer_name="Name") -> str
pdf.verify_signature() -> dict
pdf.translate(target_lang="es", output="translated.pdf") -> str
pdf.extract_and_translate(target_lang="es") -> dict

# Properties
pdf.page_count -> int
pdf.size -> {'bytes': int, 'formatted': str}
```

## Supported Languages for Translation

| Code | Language |
|------|----------|
| es | Spanish |
| fr | French |
| de | German |
| it | Italian |
| pt | Portuguese |
| ru | Russian |
| ja | Japanese |
| ko | Korean |
| zh-CN | Chinese (Simplified) |
| ar | Arabic |
| hi | Hindi |
| nl | Dutch |
| sv | Swedish |
| pl | Polish |
| tr | Turkish |

## Requirements

- Python 3.8+
- pypdf
- PyMuPDF (fitz)
- pikepdf
- deep-translator
- reportlab (for watermarks)

## License

MIT License - see [LICENSE](LICENSE) for details.
