Metadata-Version: 2.4
Name: devkit-pdf
Version: 1.0.1
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

<div align="center">

# devkit-pdf

**A powerful, modern PDF toolkit for Python**

[![PyPI version](https://badge.fury.io/py/devkit-pdf.svg)](https://pypi.org/project/devkit-pdf/)
[![Python](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
[![Downloads](https://img.shields.io/pypi/dm/devkit-pdf.svg)](https://pypi.org/project/devkit-pdf/)

---

**Merge, split, compress, rotate, watermark, encrypt, extract, compare, sign, and translate PDFs with just a few lines of code.**

</div>

---

## Features

| Feature | Description |
|---------|-------------|
| **Merge** | Combine multiple PDFs into one |
| **Split** | Extract pages by range or index |
| **Compress** | Reduce file size with smart optimization |
| **Rotate** | Rotate pages 90, 180, or 270 degrees |
| **Watermark** | Add customizable text watermarks |
| **Remove Pages** | Delete unwanted pages |
| **Extract Images** | Pull embedded images from PDFs |
| **Extract Text** | Get all text content from PDFs |
| **Encrypt** | Add password protection |
| **Unlock** | Remove password protection |
| **Lock** | Make PDF read-only |
| **Convert to Images** | Render pages as PNG/JPEG |
| **Generate Thumbnails** | Create preview images |
| **Compare PDFs** | Find differences between versions |
| **Sign PDFs** | Add visual signatures |
| **Translate** | Translate PDF content to 50+ languages |

---

## Quick Start

### Installation

```bash
pip install devkit-pdf
```

### 30-Second Example

```python
from pdf_toolkit import PDFToolkit

# Load your PDF
pdf = PDFToolkit("document.pdf")

# Do anything with it
pdf.merge("appendix.pdf", output="complete.pdf")
pdf.extract_text()
pdf.encrypt(password="secret", output="secure.pdf")
```

---

## Usage Examples

### Merge PDFs

```python
from pdf_toolkit import PDFToolkit, merge_pdfs

# Method 1: Using the class
pdf = PDFToolkit("chapter1.pdf")
pdf.merge("chapter2.pdf", "chapter3.pdf", output="book.pdf")

# Method 2: Direct function call
merge_pdfs(["file1.pdf", "file2.pdf", "file3.pdf"], output="merged.pdf")
```

### Split PDF

```python
from pdf_toolkit import split_pdf

# Extract pages 1-5
split_pdf("input.pdf", pages="1-5", output="pages_1_to_5.pdf")

# Extract specific pages
split_pdf("input.pdf", pages="1,3,5,7", output="selected.pdf")

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

### Remove Pages

```python
from pdf_toolkit import remove_pages

# Remove first page
remove_pages("input.pdf", pages="1", output="no_first_page.pdf")

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

### Rotate Pages

```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,5", output="rotated.pdf")
```

### Compress PDF

```python
from pdf_toolkit import compress_pdf, get_pdf_size

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

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

# Check compressed size
print(get_pdf_size("compressed.pdf"))
# {'bytes': 1048576, 'formatted': '1.00 MB'}
```

### Add Watermark

```python
from pdf_toolkit import add_watermark

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

# Custom watermark
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

images = extract_images("input.pdf", output_dir="./images/")
print(f"Extracted {len(images)} images")
# ['./images/page_1_img_1.png', './images/page_2_img_1.jpg', ...]
```

### Extract Text

```python
from pdf_toolkit import extract_text

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

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

### Encrypt PDF

```python
from pdf_toolkit import encrypt_pdf

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

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

### Unlock PDF

```python
from pdf_toolkit import unlock_pdf

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

### Lock PDF (Read-Only)

```python
from pdf_toolkit import 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 to PNG at 300 DPI
images = to_images("input.pdf", output_dir="./pages/", dpi=300)

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

### Generate Thumbnails

```python
from pdf_toolkit import thumbnail

thumbs = thumbnail("input.pdf", output_dir="./thumbs/", dpi=72)
print(f"Generated {len(thumbs)} thumbnails")
```

### Compare PDFs

```python
from pdf_toolkit import compare_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]
```

### Sign PDF

```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 = 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 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")

# Translate to Japanese
translate_pdf("input.pdf", target_lang="ja", output="japanese.pdf")
```

---

## API Reference

### PDFToolkit Class

```python
from pdf_toolkit import PDFToolkit

pdf = PDFToolkit("input.pdf")
```

| Method | Parameters | Returns | Description |
|--------|-----------|---------|-------------|
| `merge()` | `*files, output` | `str` | Merge multiple PDFs |
| `split()` | `pages, output` | `str` | Extract specific pages |
| `split_all()` | `output_dir` | `list[str]` | Split into individual files |
| `remove_pages()` | `pages, output` | `str` | Remove specific pages |
| `rotate()` | `angle, pages, output` | `str` | Rotate pages |
| `compress()` | `output` | `str` | Compress PDF |
| `add_watermark()` | `text, output, font_size, opacity, angle` | `str` | Add watermark |
| `extract_images()` | `output_dir` | `list[str]` | Extract embedded images |
| `extract_text()` | `pages` | `str` | Extract text content |
| `encrypt()` | `password, output` | `str` | Add password protection |
| `unlock()` | `password, output` | `str` | Remove password protection |
| `lock()` | `owner_password, output` | `str` | Make PDF read-only |
| `is_encrypted()` | - | `bool` | Check if PDF is encrypted |
| `to_images()` | `output_dir, dpi, fmt` | `list[str]` | Convert pages to images |
| `thumbnail()` | `output_dir, dpi, fmt` | `list[str]` | Generate thumbnails |
| `compare()` | `other_file` | `dict` | Compare two PDFs |
| `sign()` | `output, signature_text, signer_name, reason, location` | `str` | Add signature |
| `verify_signature()` | - | `dict` | Verify signature info |
| `translate()` | `target_lang, output` | `str` | Translate PDF |
| `extract_and_translate()` | `target_lang` | `dict` | Extract and translate text |

**Properties:**

| Property | Returns | Description |
|----------|---------|-------------|
| `page_count` | `int` | Number of pages |
| `size` | `dict` | File size info |

---

## Supported Languages

<details>
<summary>Click to expand full language list</summary>

| Code | Language | Code | Language |
|------|----------|------|----------|
| `es` | Spanish | `ru` | Russian |
| `fr` | French | `ja` | Japanese |
| `de` | German | `ko` | Korean |
| `it` | Italian | `zh-CN` | Chinese (Simplified) |
| `pt` | Portuguese | `ar` | Arabic |
| `nl` | Dutch | `hi` | Hindi |
| `sv` | Swedish | `pl` | Polish |
| `tr` | Turkish | `vi` | Vietnamese |
| `th` | Thai | `id` | Indonesian |
| `uk` | Ukrainian | `cs` | Czech |
| `el` | Greek | `da` | Danish |
| `fi` | Finnish | `hu` | Hungarian |
| `no` | Norwegian | `ro` | Romanian |

</details>

---

## Requirements

- Python 3.8 or higher
- Dependencies (installed automatically):
  - `pypdf` - PDF manipulation
  - `PyMuPDF` - Text/image extraction, rendering
  - `pikepdf` - PDF repair and optimization
  - `deep-translator` - Translation support
  - `reportlab` - Watermark generation

---

## License

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

---

<div align="center">

**Built with Python**

[Report Bug](https://github.com/yourusername/devkit-pdf/issues) · [Request Feature](https://github.com/yourusername/devkit-pdf/issues)

</div>
