在对 word 文档进行格式化时,设置段落的段前间距、段后间距是我们经常碰到的场景,设置段前、段后间距可以改善文档的可读性、美观性以及排版效果;同时适当的段落间距可以使不同段落之间更加明确地区分开来,让读者更容易理解文本的逻辑结构和段落之间的关系。在本文中,您将学习如何使用 spire.doc for c 给新增的段落设置段前、段后间距以及如何批量给同类型的段落设置段前、段后间距。
安装 spire.doc for c
有两种方法可以将 spire.doc for c 集成到您的应用程序中。一种方法是通过 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 nuget 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。
关键方法
spire.doc for c 提供了 paragraphformat 类用于处理段落格式。您可以使用 paragraph->getformat() 方法获取 paragraphformat 类的对象,然后使用下面的方法设置对应的段落段前、段后值:
方法 | 方法解释 |
para->getformat()->setbeforeautospacing(bool value); | 设置段前间距是否自动变化 |
para->getformat()->setbeforespacing(float value); | 设置固定的段前间距值 |
para->getformat()->setafterautospacing(bool value); | 设置段后间距是否自动变化 |
para->getformat()->setafterspacing(float value); | 设置固定的段后间距值 |
给新增的段落设置段前、段后间距
下面介绍如何对给新增的段落设置段前、段后间距,下面步骤的主要逻辑就是给加载的 word 文档新增一个文本内容的段落,并为其设置字体颜色、字体大小;然后设置该段落的段前、段后间距,最后保存结果文档到指定目录。
- 创建 document 类的实例。
- 使用 document->loadfromfile() 方法加载 word 文档。
- 创建 paragraph 类的实例。
- 使用 paragraph->appendtext() 方法为段落添加文本内容,并将该方法返回值放在 textrange 类的实例中。
- 使用 textrange->getcharacterformat()->settextcolor() 方法设置字体颜色。
- 使用 textrange->getcharacterformat()->setfontsize() 方法设置字体大小。
- 使用 paragraph->getformat() 方法获取 paragraphformat 对象。
- 使用 paragraphformat->setbeforeautospacing() 方法设置段前间距为非自动变化。
- 使用 paragraphformat->setbeforespacing() 方法设置段前间距为某一固定值。
- 使用 paragraphformat->setafterautospacing() 方法设置段后间距为非自动变化。
- 使用 paragraphformat->setafterspacing() 方法设置段后间距为某一固定值。
- 使用 document->getsections()->getiteminsectioncollection(0)->getparagraphs()->insert() 将段落插入到文档指定位置。
- 使用 document->savetofile 方法保存结果文档。
- c
#include "../include/spire.doc.o.h"
using namespace spire::doc;
using namespace std;
int main()
{
// 输入文件路径
wstring inputfile = l"sample.docx";
// 输出文件路径
wstring outputfile = l"result.docx";
// 创建word文档对象
intrusive_ptr document = new document();
// 从磁盘加载文件
document->loadfromfile(inputfile.c_str());
// 向文档中新增一个段落
intrusive_ptr para = new paragraph(document);
// 向段落中添加文本字符串并设置样式
intrusive_ptr textrange1 = para->appendtext(l"这是插入的段落。");
textrange1->getcharacterformat()->settextcolor(color::getblue());
textrange1->getcharacterformat()->setfontsize(15);
// 获取paragraphformat对象
intrusive_ptr format = para->getformat();
// 设置段前间距为固定值:10(磅)pt
format->setbeforeautospacing(false);
format->setbeforespacing(10);
// 设置段后间距为固定值:10(磅)pt
format->setafterautospacing(false);
format->setafterspacing(10);
// 将添加的段落插入到word文档中
document->getsections()->getiteminsectioncollection(0)->getparagraphs()->insert(1, para);
// 保存到文件
document->savetofile(outputfile.c_str(), fileformat::docx2013);
// 关闭文档
document->close();
}
批量给同类型的段落设置段前、段后间距
我们用 spire.doc for c 格式化文档段落时,更多的场景是需要批量对某些段落进行段前、段后间距的设置以此来提高效率。下面就介绍如何批量对拥有相同样式的段落设置段前、段后间距。下面看看具体实现步骤:
- 创建 document 类的实例。
- 使用 document->loadfromfile() 方法加载 word 文档。
- 遍历 document 所有节(section)。
- 遍历当前节(section)中所有段落(paragraph)。
- 获取 paragraph 类的实例。
- 使用 paragraph->getstylename() 获取段落样式名称。
- 判断获取到的样式名称是否符合我们需求。
对于符合需求的段落设置段前、段后间距,就和给新增段落设置段前、段后间距一样,如下步骤:
- 使用 paragraph->getformat() 方法获取 paragraphformat 对象。
- 使用 paragraphformat->setbeforeautospacing() 方法设置段前间距为非自动变化。
- 使用 paragraphformat->setbeforespacing() 方法设置段前间距为某一固定值。
- 使用 paragraphformat->setafterautospacing() 方法设置段后间距为非自动变化。
- 使用 paragraphformat->setafterspacing() 方法设置段后间距为某一固定值。
- 批量处理完段落后,使用 document->savetofile 方法保存结果文档。
- c
#include "../include/spire.doc.o.h" using namespace spire::doc; using namespace std; int main() { // 输入文件路径 wstring inputfile = l"sample.docx"; // 输出文件路径 wstring outputfile = l"result.docx"; // 创建word文档对象 intrusive_ptr
document = new document(); // 从磁盘加载文件 document->loadfromfile(inputfile.c_str()); // 遍历文档中的所有setion for (int i = 0; i < document->getsections()->getcount(); i ) { // 获取当前section intrusive_ptr section = document->getsections()->getiteminsectioncollection(i); // 遍历当前section的所有段落 for (int j = 0; j < section->getparagraphs()->getcount(); j ) { // 获取当前段落 intrusive_ptr
paragraph = section->getparagraphs()->getiteminparagraphcollection(j); // 获取当前段落的样式名称 wstring style_name = paragraph->getstylename(); // 判断样式名称是否为“heading1” if (style_name.compare(l"heading1") == 0) { // 获取paragraphformat对象 intrusive_ptr format = paragraph->getformat(); // 设置段前间距为固定值:20(磅)pt format->setbeforeautospacing(false); format->setbeforespacing(20); // 设置段后间距为固定值:20(磅)pt format->setafterautospacing(false); format->setafterspacing(20); } } } // 保存到文件 document->savetofile(outputfile.c_str(), fileformat::docx2013); // 关闭文档 document->close(); }
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。