Skip to content

DOCX Skill 详解

Word 文档的创建、编辑和分析

基本信息

属性
名称docx
类别文档处理
输出格式.docx
许可证专有(仅源码可见)
yaml
name: docx
description: "Comprehensive document creation, editing, and analysis with
support for tracked changes, comments, formatting preservation, and text
extraction. When Claude needs to work with professional documents (.docx
files) for: (1) Creating new documents, (2) Modifying or editing content,
(3) Working with tracked changes, (4) Adding comments, or any other
document tasks"

1. 核心概念

1.1 DOCX 文件本质

通俗比喻:.docx 文件本质上是一个 ZIP 压缩包,里面包含 XML 文件和其他资源。理解这一点是处理 Word 文档的关键。

1.2 决策树

mermaid
graph TD
    A[任务类型?] --> B[读取/分析内容]
    A --> C[创建新文档]
    A --> D[编辑现有文档]

    B --> B1[使用 pandoc 或 XML 访问]
    C --> C1[使用 docx-js]
    D --> D1{文档来源?}

    D1 --> D2[自己的文档 + 简单修改]
    D1 --> D3[他人的文档]
    D1 --> D4[法律/学术/商业文档]

    D2 --> D5[基本 OOXML 编辑]
    D3 --> D6[红线标记工作流]
    D4 --> D6

2. 读取和分析内容

2.1 文本提取(推荐)

bash
# 使用 pandoc 转换为 Markdown
pandoc --track-changes=all path-to-file.docx -o output.md

# 选项:
# --track-changes=accept  接受所有修订
# --track-changes=reject  拒绝所有修订
# --track-changes=all     显示所有修订

2.2 原始 XML 访问

需要 XML 访问的场景:

  • 批注(Comments)
  • 复杂格式
  • 文档结构
  • 嵌入媒体
  • 元数据
bash
# 解包文件
python ooxml/scripts/unpack.py <office_file> <output_directory>

2.3 关键文件结构

文件路径内容
word/document.xml主文档内容
word/comments.xml批注(被 document.xml 引用)
word/media/嵌入的图片和媒体文件

修订标记

  • <w:ins> - 插入内容
  • <w:del> - 删除内容

3. 创建新文档

3.1 工作流

使用 docx-js 库(JavaScript/TypeScript):

markdown
1. **必须完整阅读** docx-js.md 文件(~500行)
   获取详细语法、格式规则和最佳实践

2. 创建 JS/TS 文件
   使用 Document, Paragraph, TextRun 组件

3. 导出为 .docx
   使用 Packer.toBuffer()

3.2 代码示例

javascript
const { Document, Paragraph, TextRun, Packer } = require('docx');
const fs = require('fs');

// 创建文档
const doc = new Document({
    sections: [{
        children: [
            new Paragraph({
                children: [
                    new TextRun({
                        text: "Hello World",
                        bold: true,
                        size: 28
                    })
                ]
            })
        ]
    }]
});

// 导出
Packer.toBuffer(doc).then(buffer => {
    fs.writeFileSync("output.docx", buffer);
});

4. 编辑现有文档

4.1 基本 OOXML 编辑

使用 Document library(Python 库):

markdown
1. **必须完整阅读** ooxml.md 文件(~600行)
   获取 Document 库 API 和 XML 编辑模式

2. 解包文档
   python ooxml/scripts/unpack.py <file.docx> <dir>

3. 创建并运行 Python 脚本
   使用 Document library

4. 打包最终文档
   python ooxml/scripts/pack.py <dir> <file.docx>

5. 红线标记工作流(Redlining)

5.1 适用场景

markdown
**必须使用红线标记的情况**
- 法律文档
- 学术文档
- 商业文档
- 政府文档
- 他人的文档

**推荐使用红线标记的情况**
- 需要追踪修改的任何文档

5.2 核心原则:最小化精确编辑

markdown
**原则**:只标记实际更改的文本

✗ 错误 - 替换整个句子:
<w:del><w:delText>The term is 30 days.</w:delText></w:del>
<w:ins><w:t>The term is 60 days.</w:t></w:ins>

✓ 正确 - 只标记更改部分:
<w:r><w:t>The term is </w:t></w:r>
<w:del><w:delText>30</w:delText></w:del>
<w:ins><w:t>60</w:t></w:ins>
<w:r><w:t> days.</w:t></w:r>

5.3 红线标记工作流步骤

markdown
**1. 获取 Markdown 表示**
pandoc --track-changes=all path-to-file.docx -o current.md

**2. 识别并分组更改**
- 按章节分组(3-10 个更改/批次)
- 使用章节/标题编号定位
- 不要使用 Markdown 行号

**3. 读取文档并解包**
- 完整阅读 ooxml.md
- 解包文档
- 记录建议的 RSID

**4. 分批实现更改**
- 映射文本到 XML
- 创建并运行脚本
- 每批次后验证

**5. 打包文档**
python ooxml/scripts/pack.py unpacked reviewed-document.docx

**6. 最终验证**
pandoc --track-changes=all reviewed-document.docx -o verification.md
grep "original phrase" verification.md    # 应该找不到
grep "replacement phrase" verification.md # 应该找到

6. 文档转图片

6.1 两步转换流程

bash
# 1. DOCX 转 PDF
soffice --headless --convert-to pdf document.docx

# 2. PDF 转 JPEG
pdftoppm -jpeg -r 150 document.pdf page
# 生成:page-1.jpg, page-2.jpg 等

# 选项:
# -r 150   分辨率 150 DPI
# -jpeg    输出 JPEG(可用 -png)
# -f N     起始页
# -l N     结束页

6.2 指定页面范围

bash
pdftoppm -jpeg -r 150 -f 2 -l 5 document.pdf page
# 只转换第 2-5 页

7. 代码风格指南

markdown
**重要**:生成 DOCX 操作代码时:

✓ 写简洁的代码
✓ 避免冗长的变量名
✓ 避免多余的操作
✗ 避免不必要的 print 语句

8. 依赖项

工具安装命令用途
pandocsudo apt-get install pandoc文本提取
docxnpm install -g docx创建新文档
LibreOfficesudo apt-get install libreofficePDF 转换
Popplersudo apt-get install poppler-utilsPDF 转图片
defusedxmlpip install defusedxml安全 XML 解析

9. 使用示例

9.1 触发方式

"帮我创建一个 Word 文档"
"分析这个 docx 文件的内容"
"在这份合同中添加修订标记"
"extract text from this document"
"add tracked changes to this file"

9.2 典型场景

场景推荐方法
读取文本pandoc 转 Markdown
创建新文档docx-js
简单编辑基本 OOXML
合同审查红线标记工作流
批注处理原始 XML 访问

10. 本节小结

要点说明
文件本质DOCX = ZIP 压缩的 XML
创建工具docx-js (JavaScript)
编辑工具Document library (Python)
红线标记法律/商业文档必须使用
最小编辑只标记实际更改的文本

返回:Skills 目录

基于 MIT 许可证发布。内容版权归作者所有。