用途
docx 技能用于创建、读取、编辑和操作 Word 文档(.docx 文件)。当用户需要处理 Word 文档时触发,例如提及“Word doc”等。
基本原理
.docx 文件本质上是一个 ZIP 归档,内部包含 XML 文件。技能围绕这一结构提供读取、创建和编辑能力。
主要能力
读取与分析内容
- 使用 pandoc 提取文本,支持追踪修订:
pandoc --track-changes=all document.docx -o output.md - 解包获取原始 XML:
python scripts/office/unpack.py document.docx unpacked/ - 转换为图片:先用 soffice.py 转 PDF,再用 pdftoppm 转 JPEG
- 接受追踪修订生成干净文档(需 LibreOffice):
python scripts/accept_changes.py input.docx output.docx
创建新文档
使用 docx-js(JavaScript 库),安装命令:npm install -g docx。创建后需校验:python scripts/office/validate.py doc.docx,若失败则解包、修复 XML、重新打包。
覆盖的排版能力包括:
- 页面尺寸:docx-js 默认 A4,需显式设置。US Letter 为 12240 x 15840 DXA,A4 为 11906 x 16838 DXA(1440 DXA = 1 英寸)。横向时传入纵向尺寸并设置
orientation: PageOrientation.LANDSCAPE。 - 样式:可覆盖内置标题样式,使用精确 ID(如 "Heading1"),需包含 outlineLevel 以支持目录。
- 列表:禁止使用 unicode 项目符号,应使用 LevelFormat.BULLET 配合 numbering 配置。
- 表格:需同时设置 columnWidths 和单元格 width,使用 WidthType.DXA(不用 PERCENTAGE),使用 ShadingType.CLEAR(不用 SOLID),并添加单元格边距。
- 图片:ImageRun 必须指定 type(png/jpg 等),altText 三项均需提供。
- 分页:PageBreak 必须放在 Paragraph 内。
- 超链接:支持外部链接和内部书签链接。
- 脚注、制表位、多栏布局、目录、页眉页脚等。
编辑现有文档
遵循三步流程:
- 解包:
python scripts/office/unpack.py document.docx unpacked/,提取 XML、美化打印、合并相邻 run、转换智能引号。 - 编辑 XML:编辑 unpacked/word/ 下的文件。追踪修订和批注作者默认使用 "Claude"。使用 Edit 工具直接替换字符串,不写 Python 脚本。新内容使用智能引号 XML 实体。添加批注可用 comment.py。
- 重新打包:
python scripts/office/pack.py unpacked/ output.docx --original document.docx,带自动修复校验。
转换旧版 .doc
旧版 .doc 文件编辑前需转换:python scripts/office/soffice.py --headless --convert-to docx document.doc
适用场景
- 程序化生成 Word 文档(报告、合同、信函等)
- 批量读取或分析 Word 文档内容
- 编辑现有 Word 文档并保留追踪修订
- 处理旧版 .doc 文件
限制与注意事项
- 创建文档依赖 docx-js(Node.js 环境)
- 部分转换功能(如接受修订、转 PDF)依赖 LibreOffice
- 自动修复无法处理:格式错误的 XML、无效元素嵌套、缺失关系、schema 违规
- 表格不能用作分隔线,单元格有最小高度会渲染为空框
- 目录要求标题仅使用 HeadingLevel,不能使用自定义样式
- 追踪修订时需替换整个 <w:r> 元素,并保留 <w:rPr> 格式
- 删除整段内容时需同时标记段落标记为删除
暂未提供
关于该技能的收费、价格、平台支持范围等具体信息,资料中暂未提供。