Skip to content

参考

docx 常用类、构造选项、枚举与单位 速查。版本基线 9.x(npm latest 9.7.1,MIT)。

一、核心类与对象层级

作用嵌套位置
Document文档根,new Document({ sections, ... })最外层
section(普通对象)节:页面/页眉脚 + childrenDocument.sections[]
Paragraph段落section.children[] / 单元格
TextRun带样式文本片段Paragraph.children[]
ImageRun图片Paragraph.children[]
ExternalHyperlink / InternalHyperlink外链 / 站内跳转Paragraph.children[]
Table / TableRow / TableCell表格三件套section.children[]
Header / Footer页眉 / 页脚section.headers/footers
TableOfContents目录section.children[]
Bookmark书签锚点Paragraph.children[]
Math / MathRun数学公式Paragraph.children[]
Packer打包导出(静态方法)

二、Packer 导出方法

方法返回场景
Packer.toBuffer(doc, prettify?, overrides?)Node Buffer / 浏览器 Uint8ArrayNode 写盘 / HTTP 响应
Packer.toBlob(doc, ...)Blob浏览器下载(配 saveAs
Packer.toBase64String(doc, ...)string内嵌 / 传输
Packer.toStream(doc, ...)可读流Node 流式写大文件

全部异步(返回 Promise)。prettify 控制 XML 缩进美化(调试用);overrides 覆写包内子文件。

三、Document 常用选项

选项类型说明
sectionsarray唯一必填,节数组
creator/title/subject/description/keywordsstring文档属性元数据
stylesobject命名样式(paragraphStyles/characterStyles/default
numberingobject编号方案(config[]
fontsarray内嵌字体({ name, data }
featuresobjectupdateFields(目录字段更新)
evenAndOddHeaderAndFootersboolean启用奇偶页不同页眉脚

四、section 常用属性

属性说明
children块级内容(Paragraph/Table/TOC…)
properties.page.size纸张:{ width, height, orientation }PageOrientation
properties.page.margin页边距(twips)
properties.page.pageNumbers页码:{ start, formatType }
properties.column分栏
headers / footers{ default, first, even }(值为 Header/Footer)

五、Paragraph 常用选项

选项类型说明
textstring纯文本简写
childrenarrayTextRun/ImageRun/Hyperlink 等
headingHeadingLevelHEADING_1~6TITLE
alignmentAlignmentTypeSTART/CENTER/END/BOTH
spacingobject{ before, after, line, lineRule }(twips)
indentobject{ left, right, firstLine, hanging }(twips)
bulletobject{ level }(无序列表 0~9)
numberingobject{ reference, level, instance? }(有序/多级)
stylestring引用命名样式 id
borderobject段落边框
pageBreakBeforeboolean段前分页

六、TextRun 常用选项

选项类型说明
textstring文本内容
bold / italics / strikeboolean粗 / 斜(复数)/ 删除线
underlineobject{ type: UnderlineType, color }
sizenumber字号 half-points(pt×2)
colorstring字色,不带 # 的 hex
fontstring字体名
highlightstring突出显示(预设色名 yellow/green…)
shadingobject底纹 { type, fill, color }(任意 hex)
superScript / subScriptboolean上标 / 下标
allCaps / smallCapsboolean全大写 / 小型大写
breaknumber同段内换行次数
childrenarray可含 PageNumber.CURRENT/TOTAL_PAGES

七、Table / Cell 常用

写法
建表new Table({ rows: [...], width })
new TableRow({ children: [Cell...], tableHeader?, height? })
单元格new TableCell({ children: [Paragraph...] })
横向合并单元格 columnSpan: N
纵向合并单元格 rowSpan: N
宽度width: { size, type: WidthType.XXX }
单元格背景shading: { fill: 'DDDDDD' }
边框borders: { top/bottom/left/right: { style: BorderStyle, size, color } }

八、ImageRun 选项

选项说明
type'png' / 'jpg' / 'gif' / 'bmp' / 'svg'
data二进制:Buffer / Uint8Array / ArrayBuffer / Base64 / Blob
transformation{ width, height }(像素)
floating浮动定位(offset 单位 EMU) + wrap 环绕
fallbackSVG 必备的回退位图
altText{ name, title, description }

九、常用枚举

枚举取值(部分)
HeadingLevelHEADING_1~HEADING_6TITLE
AlignmentTypeSTART/LEFTCENTEREND/RIGHTBOTH/JUSTIFIED
WidthTypeDXA(twips)、PERCENTAGEAUTONIL
UnderlineTypeSINGLEDOUBLEDOTTEDDASHWAVE
BorderStyleSINGLEDOUBLEDASHEDDOTTEDTHICK
LevelFormatDECIMALUPPER_ROMANLOWER_LETTERBULLET
PageOrientationPORTRAITLANDSCAPE
ShadingTypeCLEARSOLID
PatchTypePARAGRAPHDOCUMENT

十、单位换算速查

单位用于换算
half-point(半磅)字号 size1pt = 2;12pt → 24
twip(DXA)间距 / 宽度 / 页边距1pt = 20;1 inch = 1440
EMU图片 / 绘图 / 浮动偏移1 inch = 914400;1 cm = 360000
颜色color/fill不带 # 的 6 位 hex(如 'FF0000'

十一、patchDocument(模板补丁)

ts
await patchDocument({
  outputType: 'nodebuffer',   // 或 'uint8array' / 'blob' / 'base64'
  data: templateBuffer,       // 已有 .docx 模板
  patches: {
    tag: { type: PatchType.PARAGRAPH | PatchType.DOCUMENT, children: [...] },
  },
});

模板里用 占位;PARAGRAPH 段内替换,DOCUMENT 块级替换。


速查完毕,回 指南 · 基础 理解对象模型,或 指南 · 进阶 看表格/图片/页眉脚实战。