行间距决定段内各行之间的垂直距离,直接影响版面的疏密与可读性,也决定同一份内容会占多少页;段落对齐方式则决定文字在页面宽度内的分布,标题居中、正文两端对齐、落款右对齐,是公文与报告中常见的组合。
在桌面软件中逐段调整并不复杂,但面对批量生成的文档,或需要嵌入 Web 页面的处理流程,手工操作难以复用。本文用 Spire.Doc for JavaScript 在浏览器中完成上述设置:文档通过虚拟文件系统(VFS)加载,修改后保存并直接下载,整个过程基于 WebAssembly 在浏览器端运行,无需安装 Office,也不依赖后端服务。
本文介绍两个功能点:
有关安装和项目配置,请参考 React 项目中集成 Spire.Doc for JavaScript。下面的示例假定 Spire.Doc 已安装、WebAssembly 模块已初始化。
设置 Word 段落行间距
设置 Word 段落行间距时,行距由段落的 ParagraphFormat 控制。LineSpacing 指定数值,单位是磅;LineSpacingRule 指定该数值的生效方式,两者配合才能得到预期的行距效果:
| 成员 | 作用 |
|---|---|
ParagraphFormat.LineSpacing |
行距数值,单位为磅 |
ParagraphFormat.LineSpacingRule |
行距规则,取值为 AtLeast、Exactly 或 Multiple |
示例文档的正文为单倍行距。下面的代码将第 3 至第 7 段(索引 2 至 6)设置为固定值 30 磅,标题与编制信息保持原样。
具体操作步骤如下:
- 获取 Spire.Doc 的 WASM 模块,确认已就绪。
- 载入字体,把示例文档读入 VFS 并加载为
Document。 - 取第一个节的段落集合,逐段取得
ParagraphFormat,设置LineSpacing与LineSpacingRule。 - 使用
SaveToFile()保存结果文件。 - 从 VFS 读出结果文件并触发浏览器下载。
设置 Word 段落行间距的代码如下:
function App() {
const setLineSpacing = async () => {
// 获取 Spire.Doc 的 WASM 模块
const wasmModule = window.wasmModule?.spiredoc;
// 检查模块是否就绪
if (!wasmModule) {
alert('Spire.Doc is not ready yet');
return;
}
// 载入待处理的文档
await window.spire.FetchFileToVFS('Sample.docx', '', `${process.env.PUBLIC_URL}/data/`);
// 创建 Document 实例并加载文档
const doc = new wasmModule.Document();
doc.LoadFromFile('Sample.docx');
// 行距按段落生效,这里取第一节的段落集合
const paragraphs = doc.Sections.get_Item(0).Paragraphs;
// 示例文档第 3 至第 7 段为正文,按实际文档调整索引范围
for (let i = 2; i <= 6; i++) {
const format = paragraphs.get_Item(i).Format;
// 固定行距:每行高度为 30 磅
format.LineSpacing = 30;
format.LineSpacingRule = wasmModule.LineSpacingRule.Exactly;
}
// 保存结果文件
const outputFileName = 'SetLineSpacing.docx';
doc.SaveToFile({ fileName: outputFileName, fileFormat: wasmModule.FileFormat.Docx2013 });
doc.Dispose();
// 从 VFS 读取生成的文件,触发下载
const fileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const blob = new Blob([fileArray], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = outputFileName;
a.click();
URL.revokeObjectURL(url);
};
return (
<div style={{ textAlign: 'center', height: '300px' }}>
<h1>设置 Word 段落行间距</h1>
<button onClick={setLineSpacing}>
设置行间距
</button>
</div>
);
}
export default App;
将正文设置为固定值 30 磅行距后的页面:

行距规则的三种取值
LineSpacingRule 决定 LineSpacing 的数值如何参与排版,常见取值如下:
| 取值 | 含义 | 设置示例 |
|---|---|---|
LineSpacingRule.AtLeast |
最小行距,行高不低于指定磅值 | LineSpacing = 30 |
LineSpacingRule.Exactly |
固定行距,每行高度固定为指定磅值 | LineSpacing = 30 |
LineSpacingRule.Multiple |
多倍行距,以单倍行距(12 磅)为基准 | 1.5 倍写 18,2 倍写 24 |
三种规则的写法如下:
const format = paragraphs.get_Item(6).Format;
// 固定行距:每行固定为 30 磅
format.LineSpacing = 30;
format.LineSpacingRule = wasmModule.LineSpacingRule.Exactly;
// 最小行距:行高不低于 30 磅,字号更大时可自动撑高
format.LineSpacing = 30;
format.LineSpacingRule = wasmModule.LineSpacingRule.AtLeast;
// 多倍行距:1.5 倍行距
format.LineSpacing = 18;
format.LineSpacingRule = wasmModule.LineSpacingRule.Multiple;
固定行距适合版式已经确定、需要控制页数的文档;正文混用不同字号时,最小行距或多倍行距可以让较大的字不至于挤占相邻行。数值过小时,固定行距可能造成文字重叠,设置前可以先确认段落中的最大字号。
设置 Word 段落对齐方式
设置 Word 段落对齐方式时,通过 ParagraphFormat.HorizontalAlignment 指定枚举值。Spire.Doc for JavaScript 提供五种常用取值:
| 取值 | 对齐效果 |
|---|---|
HorizontalAlignment.Left |
左对齐,文字靠页面左边界 |
HorizontalAlignment.Center |
居中,文字在页面宽度内居中 |
HorizontalAlignment.Right |
右对齐,文字靠页面右边界 |
HorizontalAlignment.Justify |
两端对齐,除末行外同时对齐左右边界 |
HorizontalAlignment.Distribute |
分散对齐,包括末行在内拉满整行宽度 |
示例文档把标题居中、正文两端对齐、注释分散对齐、附件说明左对齐、落款与日期右对齐,覆盖了上述五种取值。
具体操作步骤如下:
- 获取 Spire.Doc 的 WASM 模块,确认已就绪。
- 载入字体,把示例文档读入 VFS 并加载为
Document。 - 取第一个节的段落集合,按索引取得目标段落,设置
ParagraphFormat.HorizontalAlignment。 - 使用
SaveToFile()保存结果文件。 - 从 VFS 读出结果文件并触发浏览器下载。
设置 Word 段落对齐方式的代码如下:
function App() {
const setParagraphAlignment = async () => {
// 获取 Spire.Doc 的 WASM 模块
const wasmModule = window.wasmModule?.spiredoc;
// 检查模块是否就绪
if (!wasmModule) {
alert('Spire.Doc is not ready yet');
return;
}
// 载入待处理的文档
await window.spire.FetchFileToVFS('Sample.docx', '', `${process.env.PUBLIC_URL}/data/`);
// 创建 Document 实例并加载文档
const doc = new wasmModule.Document();
doc.LoadFromFile('Sample.docx');
// 对齐方式同样按段落生效,这里取第一节的段落集合
const paragraphs = doc.Sections.get_Item(0).Paragraphs;
// 标题与编制信息居中
paragraphs.get_Item(0).Format.HorizontalAlignment = wasmModule.HorizontalAlignment.Center;
paragraphs.get_Item(1).Format.HorizontalAlignment = wasmModule.HorizontalAlignment.Center;
// 正文两端对齐
for (let i = 2; i <= 6; i++) {
paragraphs.get_Item(i).Format.HorizontalAlignment = wasmModule.HorizontalAlignment.Justify;
}
// 注释分散对齐
paragraphs.get_Item(7).Format.HorizontalAlignment = wasmModule.HorizontalAlignment.Distribute;
// 附件说明左对齐
paragraphs.get_Item(8).Format.HorizontalAlignment = wasmModule.HorizontalAlignment.Left;
// 落款与日期右对齐
paragraphs.get_Item(9).Format.HorizontalAlignment = wasmModule.HorizontalAlignment.Right;
paragraphs.get_Item(10).Format.HorizontalAlignment = wasmModule.HorizontalAlignment.Right;
// 保存结果文件
const outputFileName = 'SetParagraphAlignment.docx';
doc.SaveToFile({ fileName: outputFileName, fileFormat: wasmModule.FileFormat.Docx2013 });
doc.Dispose();
// 从 VFS 读取生成的文件,触发下载
const fileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const blob = new Blob([fileArray], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = outputFileName;
a.click();
URL.revokeObjectURL(url);
};
return (
<div style={{ textAlign: 'center', height: '300px' }}>
<h1>设置 Word 段落对齐方式</h1>
<button onClick={setParagraphAlignment}>
设置对齐方式
</button>
</div>
);
}
export default App;
设置五种对齐方式后的页面:

两端对齐与分散对齐的区别
两种对齐方式都会调整字间距,但作用范围不同:两端对齐只调整非末行,末行按自然宽度排列;分散对齐会把末行也拉伸到整行宽度。中文段落中,分散对齐还会在字符之间均匀分配空隙,短句的视觉效果比较明显。
// 两端对齐:末行保持自然宽度
paragraphs.get_Item(6).Format.HorizontalAlignment = wasmModule.HorizontalAlignment.Justify;
// 分散对齐:末行也拉满整行
paragraphs.get_Item(7).Format.HorizontalAlignment = wasmModule.HorizontalAlignment.Distribute;
常见问题
行距的单位是什么,为什么设置 1.5 没有变成 1.5 倍行距
LineSpacing 的数值单位是磅,多倍行距并不是直接填写倍数。选择 LineSpacingRule.Multiple 时,单倍行距按 12 磅计算,1.5 倍对应 18,2 倍对应 24;直接填写 1.5 得到的行距会明显偏小。设置多倍行距时,同时指定 LineSpacingRule.Multiple 与换算后的磅值即可。
固定行距和多倍行距应该怎么选
固定行距(Exactly)让每一行保持相同高度,页数与版面容易预估,适合版式固定的公文和报表;多倍行距(Multiple)随字号同比缩放,正文混排不同字号时更稳妥。段落中存在较大字号或上标、下标时,固定值过小可能让文字与相邻行重叠,可以改用最小行距或多倍行距。
两端对齐后,段落的最后一行为什么没有拉满
Justify 只调整段落中除最后一行以外的各行,最后一行按文字的自然宽度排列,因此单行段落几乎看不出变化。需要让最后一行也占满整行时,可以改用 Distribute。
为什么只设置一个段落后,其他段落的行距没有变化
行间距与对齐方式都属于段落格式,保存在各自的段落上,通常不会因为修改一段而影响其他段落。批量处理时,可以遍历 Paragraphs 集合逐段赋值,或按需要只处理正文对应的索引区间。未直接设置格式的段落会沿用所在样式中的定义。
获取免费许可证
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。







