Metadata-Version: 2.4
Name: advanced-office-tool
Version: 1.1.7
Summary: Advanced office document processing toolkit — Word (DOCX), Excel (XLSX), and other formats
Author-email: Eric <meantech6@163.com>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/user/advanced-office-tool
Project-URL: Repository, https://github.com/user/advanced-office-tool
Project-URL: Bug Tracker, https://github.com/user/advanced-office-tool/issues
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
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: Operating System :: OS Independent
Classifier: Topic :: Office/Business
Classifier: Topic :: Text Processing :: General
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: python-docx>=1.1.0
Requires-Dist: openpyxl>=3.1.0
Requires-Dist: pygtrans>=1.2.0
Requires-Dist: lxml>=4.0
Requires-Dist: docxtpl>=0.16.0
Requires-Dist: docxcompose>=1.3.0
Requires-Dist: jinja2>=3.0
Requires-Dist: pymupdf>=1.19.0
Requires-Dist: pdf2docx>=0.5.0
Requires-Dist: pdfplumber>=0.9.0
Requires-Dist: reportlab>=4.0
Requires-Dist: pandas>=2.0
Requires-Dist: Pillow>=10.0
Requires-Dist: yt-dlp>=2023.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: black>=24.0; extra == "dev"
Requires-Dist: ruff>=0.4.0; extra == "dev"
Provides-Extra: pdf
Requires-Dist: reportlab>=4.0; extra == "pdf"
Dynamic: license-file

# Advanced Office Tool

Advanced office document processing toolkit — Word (DOCX), Excel (XLSX), and other formats.

## Installation

```bash
pip install advanced-office-tool
```

## Usage

Use `ServerAgent` for all document operations. Import once, call methods on any file path.

```python
from advanced_office_tool import ServerAgent

agent = ServerAgent()
```

### DOCX Translation

```python
result = agent.translate_file(
    "manual.docx",
    target_language="en",       # "en", "zh", "auto", etc.
    target_format="{translated}" # or "{original}" or "{original}{translated}"
)
print(result["output_file_path"])
# → /home/ovos/.hermes/skills/office-tool/uploads/manual_en.docx
```

### DOCX Merge (with auto CRC-32 repair)

```python
from advanced_office_tool import DocxAgent, SafeDocument

# Merge with auto repair for corrupted files
agent = DocxAgent()
agent.load_document("chapter1.docx")
agent.merge_docx(["chapter2.docx", "chapter3.docx"], "merged.docx")
```

`SafeDocument` transparently repairs bad CRC-32 ZIP checksums:

```python
from advanced_office_tool import SafeDocument
from docx import Document

# Broken DOCX auto-repairs on first access
doc = SafeDocument("corrupted.docx")
for p in doc.paragraphs:
    print(p.text)
```

### PDF Conversion

```python
# PDF → DOCX
result = agent.pdf_to_docx("scan.pdf")
print(result["content"])

# DOCX → PDF
result = agent.docx_to_pdf("report.docx")
print(result["content"])

# XLSX → PDF
result = agent.xlsx_to_pdf("data.xlsx")
print(result["content"])

# Images → PDF
result = agent.pngs_to_pdf(["img1.png", "img2.png"])
print(result["output_pdf_path"])

# PDF → PNG images
images = agent.pdf_to_png("document.pdf", dpi=300)
print(images)  # ["/path/to/page0.png", ...]
```

### PDF Stamp

```python
result = agent.add_stamp_to_pdf(
    "contract.pdf",
    position="80,80",           # top-right corner
    scale="1.5",                # stamp size multiplier
    stamp_image="./stamp.png"   # stamp image path
)
print(result["output_pdf_after_stamp"])
```

### Excel Price Adjustment

```python
result = agent.adjust_price_in_excel(
    "quote.xlsx",
    price_multiplier="1.3/6.9",  # unit_price * multiplier / divisor
    decimal_places="0"            # round to 0 decimals
)
print(result["output_file_path"])
```

### Template Rendering

```python
result = agent.render_docx_template(
    "template.docx",
    obj={"name": "Company A", "amount": 50000},
    output_path="output.docx"
)
```

### PDF Merge to DOCX (N images per page)

```python
result = agent.merge_pdfs_folder_to_docx_vertical(
    pdf_folder="./invoices",   # folder with PDF files
    number_in_page=2           # 2 PDF pages per DOCX page
)
print(result["output_file_path"])
```

### Unzip

```python
result = agent.uncompress_zip("archive.zip", "mt123456")
print(result["message"])
```

### Available Classes

| Class | Description |
|-------|-------------|
| `ServerAgent` | Main orchestrator — PDF, Excel, DOCX, translation, templates |
| `DocxAgent` | DOCX paragraph/table translation and manipulation |
| `ExcelOperator` | XLSX merge, formula, style, image manipulation |
| `TranslateAgent` | pygtrans batch translate with terminology protection |
| `SafeDocument` | Auto-repair DOCX files with bad CRC-32 checksums |
| `OdooAgent` | Odoo ERP integration |

## License

Apache-2.0
