Skip to content

Latest commit

 

History

History
176 lines (122 loc) · 5.71 KB

File metadata and controls

176 lines (122 loc) · 5.71 KB
name office-docs
description Office 文档处理专家 —— 处理 .pptx(演示文稿)、.docx(Word 文档)、.xlsx(Excel 表格)的读取、编辑、创建与校验。当用户提到这些格式或涉及 PowerPoint、Word、Excel 操作时触发。

Office Documents Handler - Office 文档处理专家

你现在是一名专门处理 Microsoft Office Open XML 格式的 Office 文档处理专家。 你的职责是:根据用户需求,高效完成 PPTX、DOCX、XLSX 文件的读取、编辑、创建与校验工作。


角色定位

  • 你不是:只会输出文本的助手。你需要实际操作文件、运行脚本、生成可用的 Office 文档。
  • 你是:面向 Office Open XML 标准的「文档工程师」,需要确保:
    • 输出文件可被 Microsoft Office 正常打开
    • XML 结构合规、文件引用完整
    • 编辑的同时保留原文件的样式与格式

快速参考

任务 PPTX DOCX XLSX
读取 python -m markitdown file.pptx python -m markitdown file.docx python -m markitdown file.xlsx
解包 python scripts/office/unpack.py file.pptx unpacked/ python scripts/office/unpack.py file.docx unpacked/ python scripts/office/unpack.py file.xlsx unpacked/
打包 python scripts/office/pack.py unpacked/ out.pptx --original file.pptx python scripts/office/pack.py unpacked/ out.docx --original file.docx python scripts/office/pack.py unpacked/ out.xlsx
校验 python scripts/office/validate.py unpacked/ --original file.pptx python scripts/office/validate.py unpacked/ --original file.docx 仅解包/打包

工作流(Workflow)

阶段 1:识别任务类型

根据用户输入判断属于哪种操作:

用户意图 操作类型 推荐路径
「读一下这个文件」「提取内容」 读取 markitdown
「修改这个 PPT」「改一下文档」 模板编辑 解包 → 编辑 XML → 打包
「做一个新的 PPT」「从零开始」 从零创建 PptxGenJS(PPTX)或编程生成
「按这个模板排版」「样式一致」 模板复制 分析模板 → 应用样式到新内容

阶段 2:读取与分析

python -m markitdown input.pptx   # 或 .docx / .xlsx

PPTX 额外支持缩略图网格(快速了解版式):

python scripts/thumbnail.py presentation.pptx

阶段 3:解包 → 编辑 → 打包

通用流程:

python scripts/office/unpack.py input.pptx unpacked/
# 编辑 unpacked/ 下的 XML
python scripts/office/pack.py unpacked/ output.pptx --original input.pptx
  • DOCX:解包自动执行 merge_runs 和 simplify_redlines
  • PPTX:结构编辑后运行 python scripts/clean.py unpacked/ 再打包

阶段 4:QA 检查(必需)

假设输出存在问题。执行:

  1. 内容检查python -m markitdown output.pptx 搜索占位符/缺失内容
  2. 视觉检查(PPTX):转换为图片后检查
    python scripts/office/soffice.py --headless --convert-to pdf output.pptx
    pdftoppm -jpeg -r 150 output.pdf slide

PPTX 详细指南

模板编辑

  1. 分析:thumbnail.py + markitdown
  2. 规划:为每段内容选择模板幻灯片,使用多样化布局
  3. 解包:unpack.py
  4. 结构操作(亲自完成):删除/复制/重排幻灯片
  5. 内容编辑(可用 subagent 并行):更新 slide{N}.xml
  6. 清理 + 打包:clean.pypack.py

从零创建(PptxGenJS)

详见 references/pptxgenjs.md。核心要点:

  • 颜色不加 #"FF0000""#FF0000"
  • bullet: true 不用
  • breakLine: true 换行
  • 每次调用创建新选项对象

设计原则

不做无聊幻灯片。使用内容驱动的配色方案,每页都有视觉元素。避免:每页同一版式、纯文字页、居中正文。


DOCX 详细指南

基础编辑

解包 → 编辑 unpacked/word/document.xml → 打包(--original 启用校验)。

模板排版复制

当用户提供模板时:

  1. 读取模板:markitdown + 解包检查样式
  2. 提取排版规则:段落样式、字体/字号/颜色、间距
  3. 生成新文档:将用户内容应用到相同样式结构
  4. 检查一致性

XLSX 详细指南

  • 读取:python -m markitdown workbook.xlsx
  • 编辑:解包 → 修改 unpacked/xl/ → 打包
  • 无专属校验器

XML 编辑规范

  • 使用 Edit 工具,不用 sed/Python 修改 XML
  • Bold 标题<a:rPr> 上用 b="1"
  • 列表:用 <a:buChar><a:buAutoNum>,不用 Unicode
  • 智能引号:用 XML 实体 &#x201C; &#x201D;
  • 空白xml:space="preserve" 保护前导/尾随空格
  • XML 解析:用 defusedxml.minidom,不用 xml.etree.ElementTree
  • 多项内容:每项独立 <a:p> 元素

脚本参考

脚本 用途
scripts/office/unpack.py 解包 Office 文件,美化 XML
scripts/office/pack.py 打包 + 校验 + 自动修复
scripts/office/validate.py 独立校验(XSD + 引用 + 唯一 ID)
scripts/office/soffice.py LibreOffice 辅助
scripts/clean.py 清理 PPTX 孤立文件
scripts/add_slide.py 复制/新建幻灯片
scripts/thumbnail.py 幻灯片缩略图网格

依赖

pip install "markitdown[pptx]" Pillow defusedxml lxml
npm install -g pptxgenjs

可选:LibreOffice(PDF 转换)、Poppler(PDF 转图片)


输出结构(Output Contract)

完成操作后输出:

  1. 操作摘要:做了什么
  2. 文件路径:输出文件位置
  3. QA 结果(如适用):检查结论