返回顶部
d

docx-cnWord文档处理

Word 文档处理 | Word Document Processing. 创建、读取、编辑 Word 文档 | Create, read, edit Word documents. 支持 .docx 格式、格式化、表格、图片 | Supports .docx format, formatting, tables, images. 触发词:Word、文档、docx.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.1
安全检测
已通过
5,022
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

docx-cn

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, 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, // 8.5 英寸(DXA 单位)
height: 15840 // 11 英寸(DXA 单位)
},
margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } // 1 英寸页边距
}
},
children: [/ 内容 /]
}]

常见页面尺寸(DXA 单位,1440 DXA = 1 英寸):

纸张宽度高度内容宽度(1 英寸页边距)
US Letter12,24015,8409,360
A4(默认)
11,906 | 16,838 | 9,026 |

横向方向: docx-js 在内部交换宽度/高度,因此传入纵向尺寸,让其处理交换:
javascript
size: {
width: 12240, // 传入短边作为宽度
height: 15840, // 传入长边作为高度
orientation: PageOrientation.LANDSCAPE // docx-js 在 XML 中交换它们
},
// 内容宽度 = 15840 - 左边距 - 右边距(使用长边)

样式(覆盖内置标题)

使用 Arial 作为默认字体(通用支持)。保持标题为黑色以确保可读性。

javascript
const doc = new Document({
styles: {
default: { document: { run: { font: Arial, size: 24 } } }, // 12pt 默认
paragraphStyles: [
// 重要:使用精确 ID 覆盖内置样式
{ id: Heading1, name: Heading 1, basedOn: Normal, next: Normal, quickFormat: true,
run: { size: 32, bold: true, font: Arial },
paragraph: { spacing: { before: 240, after: 240 }, outlineLevel: 0 } }, // TOC 需要 outlineLevel
{ id: Heading2, name: Heading 2, basedOn: Normal, next: Normal, quickFormat: true,
run: { size: 28, bold: true, font: Arial },
paragraph: { spacing: { before: 180, after: 180 }, outlineLevel: 1 } },
]
},
sections: [{
children: [
new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun(标题)] }),
]
}]
});

列表(切勿使用 Unicode 项目符号)

javascript
// ❌ 错误 - 切勿手动插入项目符号字符
new Paragraph({ children: [new TextRun(• 项目)] }) // 错误
new Paragraph({ children: [new TextRun(\u2022 项目)] }) // 错误

// ✅ 正确 - 使用带 LevelFormat.BULLET 的编号配置
const doc = new Document({
numbering: {
config: [
{ reference: bullets,
levels: [{ level: 0, format: LevelFormat.BULLET, text: •, alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },
{ reference: numbers,
levels: [{ level: 0, format: LevelFormat.DECIMAL, text: %1., alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },
]
},
sections: [{
children: [
new Paragraph({ numbering: { reference: bullets, level: 0 },
children: [new TextRun(项目符号项)] }),
new Paragraph({ numbering: { reference: numbers, level: 0 },
children: [new TextRun(编号项)] }),
]
}]
});

// ⚠️ 每个 reference 创建独立的编号
// 相同 reference = 继续(1,2,3 然后 4,5,6)
// 不同 reference = 重新开始(1,2,3 然后 1,2,3)

表格

关键:表格需要双重宽度 - 在表格上设置 columnWidths,同时在每个单元格上设置 width。缺少两者之一,表格在某些平台上会渲染不正确。

javascript
// 关键:始终设置表格宽度以确保一致渲染
// 关键:使用 ShadingType.CLEAR(而非 SOLID)以防止黑色背景
const border = { style: BorderStyle.SINGLE, size: 1, color: CCCCCC };
const borders = { top: border, bottom: border, left: border, right: border };

new Table({
width: { size: 9360, type: WidthType.DXA }, // 始终使用 DXA(百分比在 Google Docs 中会出错)
columnWidths: [4680, 4680], // 必须总和等于表格宽度(DXA:1440 = 1 英寸)
rows: [
new TableRow({
children: [
new TableCell({
borders,
width: { size: 4680, type: WidthType.DXA }, // 也在每个单元格上设置
shading: { fill: D5E8F0, type: ShadingType.CLEAR }, // CLEAR 而非 SOLID
margins: { top: 80, bottom: 80, left: 120, right: 120 }, // 单元格内边距(内部,不添加到宽度)
children: [new Paragraph({ children: [new TextRun(单元格)] })]
})
]
})
]
})

表格宽度计算:

始终使用 WidthType.DXA — WidthType.PERCENTAGE 在 Google Docs 中会出错。

javascript
// 表格宽度 = columnWidths 之和 = 内容宽度
// US Letter 带 1 英寸页边距:12240 - 2880 = 9360 DXA
width: { size: 9360, type: WidthType.DXA },
columnWidths: [7000, 2360] // 必须总和等于表格宽度

宽度规则:

  • - 始终使用 WidthType.DXA — 切勿使用 WidthType.PERCENTAGE(与 Google Docs 不兼容)
  • 表格宽度必须等于 columnWidths 之和

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 docx-cn-1776420001 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 docx-cn-1776420001 技能

通过命令行安装

skillhub install docx-cn-1776420001

下载

⬇ 下载 docx-cn v1.0.1(免费)

文件大小: 40 KB | 发布时间: 2026-4-17 18:06

v1.0.1 最新 2026-4-17 18:06
- Added _meta.json file for skill metadata management.
- No other functionality or documentation changes.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部