[ PROMPT_NODE_25634 ]
docx
[ SKILL_DOCUMENTATION ]
# DOCX 创建、编辑与分析
## 概述
.docx 文件是一个包含 XML 文件的 ZIP 压缩包。
## 快速参考
| 任务 | 方法 |
|------|----------|
| 读取/分析内容 | 使用 `pandoc` 或解压获取原始 XML |
| 创建新文档 | 使用 `docx-js` - 参见下文“创建新文档” |
| 编辑现有文档 | 解压 → 编辑 XML → 重新打包 - 参见下文“编辑现有文档” |
### 将 .doc 转换为 .docx
旧版 `.doc` 文件在编辑前必须进行转换:
bash
python scripts/office/soffice.py --headless --convert-to docx document.doc
### 读取内容
bash
# 包含修订记录的文本提取
pandoc --track-changes=all document.docx -o output.md
# 原始 XML 访问
python scripts/office/unpack.py document.docx unpacked/
### 转换为图片
bash
python scripts/office/soffice.py --headless --convert-to pdf document.docx
pdftoppm -jpeg -r 150 document.pdf page
### 接受修订记录
若要生成一份已接受所有修订记录的整洁文档(需要 LibreOffice):
bash
python scripts/accept_changes.py input.docx output.docx
---
## 创建新文档
使用 JavaScript 生成 .docx 文件,然后进行验证。安装:`npm install -g docx`
### 设置
javascript
const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, ImageRun,
Header, Footer, AlignmentType, PageOrientation, LevelFormat, ExternalHyperlink,
InternalHyperlink, Bookmark, FootnoteReferenceRun, PositionalTab,
PositionalTabAlignment, PositionalTabRelativeTo, PositionalTabLeader,
TabStopType, TabStopPosition, Column, SectionType,
TableOfContents, HeadingLevel, BorderStyle, WidthType, ShadingType,
VerticalAlign, PageNumber, PageBreak } = require('docx');
const doc = new Document({ sections: [{ children: [/* 内容 */] }] });
Packer.toBuffer(doc).then(buffer => fs.writeFileSync("doc.docx", buffer));
### 验证
创建文件后进行验证。如果验证失败,请解压、修复 XML 并重新打包。
bash
python scripts/office/validate.py doc.docx
### 页面尺寸
javascript
// 关键:docx-js 默认使用 A4,而非 US Letter
// 始终显式设置页面尺寸以获得一致的结果
sections: [{
properties: {
page: {
size: {
width: 12240, // DXA 单位下的 8.5 英寸
height: 15840 // DXA 单位下的 11 英寸
},
margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } // 1 英寸页边距
}
},
children: [/* 内容