Metadata-Version: 2.4
Name: pptweaver
Version: 0.1.0
Summary: An innovative tool to weave your web content into editable PowerPoint presentations.
Author-email: Your Name <youremail@example.com>
Project-URL: Homepage, https://github.com/yourusername/pptweaver
Project-URL: Bug Tracker, https://github.com/yourusername/pptweaver/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: beautifulsoup4
Requires-Dist: lxml
Requires-Dist: python-pptx
Requires-Dist: playwright
Requires-Dist: nest_asyncio
Requires-Dist: requests

# 幻织 (PPTWeaver) ✨ - 我为连接 AI 与可编辑 PPT 所做的个人探索

你好！这是我的一个个人项目，它源于一个简单的问题：“我能让 AI 制作出*真正可编辑*的 PowerPoint 幻灯片吗？” 这就是那次实验的故事。

**English** | [中文](./README_en.md)

---

### 🤔 痛点：AI PPT 工具总感觉……差点意思

和许多人一样，我为 AI 生成内容的能力而着迷。但当我深入研究 AI PPT 生成器时，我发现它们大多属于以下几类，而且没有一类能完全满足我的需求：

1.  **模板填充型**: 这类工具接收你的文本，然后将其填充到预定义的模板中。速度很快，但在创意上限制很大。你没法让它生成一个复杂的、定制化的图表，因为 AI 只是在“填空”。
2.  **图片导出型**: 这类工具提供了更多的视觉自由度，但它们在“作弊”。它们将漂亮的幻灯片生成为静态图片或 PDF。这完全违背了 PowerPoint 的初衷——你什么都改不了！
3.  **封闭生态型**: 像 Microsoft Copilot 这样强大的工具与 Office 深度集成，但它们通常是付费的、闭源的商业产品。对于一个喜欢自己动手探索的开发者来说，它们就像一个黑盒。

### ✨ 灵光一现：AI 是 HTML & SVG 的大师

当我意识到我问错了问题时，真正的突破到来了。我不该问“AI，帮我做个 PPT”，而应该问“AI，帮我为 PPT *生成视觉元素*”。

事实证明，大语言模型在使用 HTML 和 SVG 生成复杂、精美且精确的视觉内容方面，能力**惊人**。这是它们能够原生理解的语言。突然之间，我找到了一种方法，可以创造出任何我能想象到的定制图表、图示或布局。

但这带来了新的挑战：你如何将这些完美的、基于 Web 的内容，转换成一个完全可编辑的 `.pptx` 文件呢？

### 🛠️ 我的解决方案：PPTWeaver 的工作流

这个项目就是我的答案。我不再将 AI 视为幻灯片设计师，而是将其视为一名前端开发人员。工作流程如下：

![PPTWeaver 工作流图](docs/about_pptweaver_workflow.svg)

1.  **以 HTML/SVG 为源**: 我们从一个标准的 HTML 文件开始。每一个 `<body>` 标签都代表一张新的幻灯片。
2.  **使用无头浏览器渲染**: PPTWeaver 在后台使用 Playwright，像浏览器一样精确地渲染 HTML。这一步以完美的保真度捕获所有的 CSS 样式和布局信息。
3.  **提取与翻译**: 核心引擎会检查渲染好的页面，提取每一个 SVG 元素，并将其属性（位置、大小、颜色、文本）翻译成 `python-pptx` 库能理解的语言。
4.  **编织成 PPTX**: 最后，它将每个元素重构为原生的、可编辑的 PowerPoint 形状，从而将 Web 内容“编织”成最终的 `.pptx` 文件。

### 🏛️ 软件架构

这是一个更详细的内部组件协作图：

![PPTWeaver 软件架构图](docs/architecture.svg)

### 🚀 来试试看！

**安装:**
```bash
# 安装主包
pip install pptweaver
# 安装 Playwright 依赖 (首次使用需要)
playwright install
```

**快速使用:**
```python
import asyncio
from pptweaver import Converter

async def main():
    converter = Converter(input_file="your_slides.html", output_file="presentation.pptx")
    await converter.convert()

asyncio.run(main())
```

### 🚧 项目仍在施工中 & 未来计划

这个项目还远未完成！以下是路线图上的一个粗略想法：

-   [ ] **改进样式转换**: 更好地支持 CSS 渐变、阴影和复杂的文本样式。
-   [ ] **动画与过渡**: 为幻灯片过渡和简单的入场动画提供基础支持。
-   [ ] **交互式元素**: 探索将 HTML 链接或按钮映射到 PowerPoint 交互式元素的方法。
-   [ ] **从 Prompt 直达 PPTX**: 一个更高级的 API，与 LLM 集成，实现从文本提示直接生成最终的 PPTX 文件。
-   [ ] **更多处理器**: 支持更多小众的 SVG 标签和 CSS 属性。

### 🤝 一起玩吧！

这是一个个人项目，但我非常希望它能成为一个社区项目。如果你有任何想法、发现了 bug，或者想添加新功能，请随时开启一个 Issue 或提交一个 Pull Request！
