DOCX
文本与段落
使用段落、文本片段、格式化、对齐、间距、缩进、列表和制表位
文档由 Paragraph 元素构成,每个段落包含带有独立格式的 TextRun 子元素。
Paragraph
import { Paragraph, TextRun } from "@office-open/docx";
// 简单段落
new Paragraph({
children: [new TextRun("Plain text paragraph.")],
});
// 标题
new Paragraph({
heading: "Heading1",
children: [new TextRun("Chapter Title")],
});
对齐与间距
new Paragraph({
alignment: "center",
spacing: { before: 200, after: 200, line: 360 },
indent: { left: 720 },
children: [new TextRun("Centered paragraph with spacing and indent.")],
});
边框
new Paragraph({
border: {
bottom: { style: "single", size: 6, color: "999999" },
},
children: [new TextRun("Paragraph with a bottom border.")],
});
TextRun
每个 TextRun 可以有独立的格式设置:
new Paragraph({
children: [
new TextRun({ text: "Bold", bold: true }),
new TextRun({ text: ", Italic", italics: true }),
new TextRun({ text: ", Underline", underline: { type: "single" } }),
new TextRun({ text: ", Strikethrough", strike: true }),
new TextRun({ text: ", 24pt", size: 48 }),
new TextRun({ text: ", Colored", color: "FF0000" }),
new TextRun({ text: ", Courier", font: "Courier New" }),
new TextRun({ text: ", Super", superScript: true }),
new TextRun({ text: ", Sub", subScript: true }),
],
});
编号列表和项目符号列表
使用 Numbering 定义列表样式,然后在段落中引用:
import { Numbering, Paragraph, TextRun, Document } from "@office-open/docx";
const doc = new Document({
numbering: {
config: [
{
reference: "my-numbering",
levels: [
{ level: 0, format: "decimal", text: "%1.", alignment: "start" },
{ level: 1, format: "lowerLetter", text: "%2)", alignment: "start" },
],
},
],
},
sections: [
{
children: [
new Paragraph({
numbering: { reference: "my-numbering", level: 0 },
children: [new TextRun("First item")],
}),
new Paragraph({
numbering: { reference: "my-numbering", level: 0 },
children: [new TextRun("Second item")],
}),
new Paragraph({
numbering: { reference: "my-numbering", level: 1 },
children: [new TextRun("Nested sub-item")],
}),
],
},
],
});
对于项目符号列表,在级别配置中使用 format: "bullet"。
制表位
import { Paragraph, TextRun, Tab, TabStopType, TabStopPosition } from "@office-open/docx";
new Paragraph({
tabStops: [{ type: TabStopType.LEFT, position: TabStopPosition.MAX }],
children: [new TextRun("Name"), new Tab(), new TextRun("John Doe")],
});
分页符
在段落之间插入分页符:
new Paragraph({
pageBreakBefore: true,
children: [new TextRun("新页开始")],
});
Paragraph 选项参考
| 选项 | 类型 | 说明 |
|---|---|---|
alignment | "left" | "center" | "right" | "distribute" | 水平对齐 |
spacing.before | number | 段前间距(TWIP) |
spacing.after | number | 段后间距(TWIP) |
spacing.line | number | 行距(1/240 行) |
indent.left | number | 左缩进(TWIP) |
indent.right | number | 右缩进(TWIP) |
indent.firstLine | number | 首行缩进(TWIP) |
indent.hanging | number | 悬挂缩进(TWIP) |
heading | string | 标题级别("Heading1" — "Heading6") |
border | object | 段落边框 |
pageBreakBefore | boolean | 强制在此段落前分页 |
numbering | object | 列表引用和级别 |
tabStops | array | 制表位定义 |
style | string | 命名样式引用 |
TextRun 选项参考
| 选项 | 类型 | 说明 |
|---|---|---|
text | string | 文本内容 |
bold | boolean | 粗体 |
italics | boolean | 斜体 |
underline | object | 下划线样式和类型 |
strike | boolean | 删除线 |
doubleStrike | boolean | 双删除线 |
subScript | boolean | 下标 |
superScript | boolean | 上标 |
size | number | 字号(半磅单位,24 = 12pt) |
color | string | 十六进制颜色(不带 #) |
font | string | 字体族名称 |
highlight | string | 高亮颜色 |
shading | object | 背景底纹 |
style | string | 命名字符样式引用 |
break | number | 换行次数 |
characterSpacing | number | 字符间距(TWIP) |