用途:创建和读取 Microsoft Word(.docx)文档。在需要把结构化数据生成为报告、信函、模板(.docx),或需要从既有 .docx 中提取可读文本时使用。
主要能力:使用 docx(docx-js)库生成 .docx;显式设置页面尺寸(US Letter 与 A4)、页边距和横向;控制样式(默认字体、覆盖内置标题样式以兼容目录);以 numbering 配置生成项目符号和编号列表;表格渲染规则(DXA 宽度、列宽加单元格宽度、底纹、边框、内边距);插入带元数据和变换的图片;分页符、页眉页脚和页码;基于 Word 标题级别生成目录;通过 Pandoc 转换读取/提取 .docx 内容。
依赖:Node.js >= 18;docx ^9.0.0;pandoc >= 2.0(用于提取/转换 .docx 内容的命令行工具)。
用法示例:安装 npm i docx;用 Node.js 脚本生成文档并运行 node create-doc.js;用 pandoc document.docx -o output.md 提取文本。
实现要点:.docx 是包含 XML 部件的 ZIP 归档,由库生成并打包;Word 使用 DXA 单位,1440 DXA = 1 英寸,docx-js 默认 A4,美国文档需显式设置 US Letter 12240 x 15840,1 英寸边距下内容宽度为 9360 DXA;横向时提供纵向尺寸并设置 PageOrientation.LANDSCAPE,docx-js 内部交换宽高;目录要求段落使用 HeadingLevel.*,覆盖内置标题需用精确样式 ID(如 Heading1、Heading2),并包含 outlineLevel(H1=0、H2=1…);不要在 TextRun 中使用 \n 模拟换行,应创建独立段落;列表不要手动插入 Unicode 符号,应使用 numbering.config 与 LevelFormat.BULLET / LevelFormat.DECIMAL,同一 reference 续接编号、不同 reference 重新开始;表格始终使用 WidthType.DXA(百分比宽度可能在 Google Docs 中出问题),设置表格宽度和 columnWidths,且列宽之和等于表格宽度,每个单元格宽度与对应列宽一致,单元格边距为内部填充不增加宽度,底纹优先 ShadingType.CLEAR 以避免黑色背景;ImageRun 需要有效类型(如 png、jpg)和 altText;PageBreak 必须放在 Paragraph 内或使用 pageBreakBefore: true。
限制:缺少必要输入文件、标识符、参数或上下文时应先向用户索取;不要假设超出声明范围的外部操作或推断;覆盖已有结果、执行高成本批处理或扩大任务范围前需用户确认。输出可优先使用稳定、可复核的 Markdown 或 JSON;部分完成须明确标注 PARTIAL,并说明已完成与剩余步骤。关键输入缺失应明确说明缺失字段、文件或标识符并暂停;脚本/模板/资源执行失败应报告失败步骤、可能原因和恢复建议,不得静默降级。收费、价格和具体效果暂未提供。