Word ドキュメントの改ページは、ページレイアウトの重要な機能で、好きな場所で新しいページを開始するのに役立ちます。改ページを挿入すると、前のページのすべての書式が新しいページに適用され、ドキュメント全体がすっきりと整理されます。この記事では、Spire.Doc for C++ を使用して、プログラムで Word ドキュメントに改ページを追加または削除する方法について説明します。
Spire.Doc for C++ をインストールします
Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。
Spire.Doc for C++ を C++ アプリケーションに統合する方法
Word ドキュメントで特定の段落の後に改ページを挿入する
Spire.Doc for C++ では、段落の後に改ページを挿入する Paragraph->AppendBreak(BreakType::PageBreak) メソッドを提供しています。改ページが挿入されると、改ページを示す記号が表示されます。以下は、Word ドキュメントで特定の段落の後に改ページを挿入するための詳細な手順である。
- Document のインスタンスを作成します。
- Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
- Document->GetSections()->GetItem(sectionIndex) メソッドを使用して、指定されたセクションを取得します。
- Section->GetParagraphs()->GetItem(paragraphIndex) メソッドを使用して、指定された段落を取得します。
- Paragraph->AppendBreak(BreakType::PageBreak) メソッドを使用して、段落の末尾に改ページを追加します。
- Document->SaveToFile() メソッドを使用してドキュメントを保存します。
- C++
#include "Spire.Doc.o.h"
using namespace Spire::Doc;
int main() {
//入力ファイル、出力ファイルのパスを指定する
std::wstring inputFile = L"C:/狼はどこに行ったの.docx";
std::wstring outputFile = L"Output/段落の後に改ページを挿入.docx";
//Documentのインスタンスを作成する
Document* document = new Document();
//Wordドキュメントを読み込む
document->LoadFromFile(inputFile.c_str());
//最初のセクションを取得する
Section* section = document->GetSections()->GetItem(0);
//セクションの3つ目の段落を取得する
Paragraph* paragraph = section->GetParagraphs()->GetItem(2);
//段落の後に改ページを挿入する
paragraph->AppendBreak(BreakType::PageBreak);
//ドキュメントを保存する
document->SaveToFile(outputFile.c_str(), FileFormat::Docx2013);
document->Close();
delete document;
}
Word ドキュメントで特定のテキストの後に改ページを挿入する
Spire.Doc for C++ では、段落の後に改ページを挿入する以外に、指定したテキストを検索して、そのテキストの後に改ページを挿入することも可能です。以下、詳しい手順を説明します。
- Document のインスタンスを作成します。
- Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
- Document->FindString() メソッドを使用して、指定したテキストを検索します。
- TextSelection->GetAsOneRange() メソッドを使用して、指定されたテキストのテキスト範囲を取得します。
- TextRange->GetOwnerParagraph() メソッドを使用して、テキスト範囲がある段落を取得します。
- Paragraph->GetChildObjects()->IndexOf() メソッドを使用して、段落内のテキスト範囲の位置インデックスを取得する。
- Break インスタンスを初期化し、改ページを作成します。
- Paragraph->GetChildObjects()->Insert() メソッドを使用して、指定されたテキストの後に改ページを挿入します。
- Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
- C++
#include "Spire.Doc.o.h"
using namespace Spire::Doc;
int main() {
//入力ファイル、出力ファイルのパスを指定する
std::wstring inputFile = L"C:/狼はどこに行ったの.docx";
std::wstring outputFile = L"Output/テキストの後に改ページを挿入.docx";
//Documentのインスタンスを作成する
Document* document = new Document();
//Word ドキュメントを読み込む
document->LoadFromFile(inputFile.c_str());
//指定したテキストを検索する
TextSelection* selection = document->FindString(L"進化現象", true, true);
//指定したテキストのテキスト範囲を取得する
TextRange* range = selection->GetAsOneRange();
//テキスト範囲がある段落を取得する
Paragraph* paragraph = range->GetOwnerParagraph();
//段落内のテキスト範囲の位置インデックスを取得する
int index = paragraph->GetChildObjects()->IndexOf(range);
//改ページを作成する
Break* pageBreak = new Break(document, BreakType::PageBreak);
//指定したテキストの後に改ページを挿入する
paragraph->GetChildObjects()->Insert(index + 1, pageBreak);
//ドキュメントを保存する
document->SaveToFile(outputFile.c_str(), FileFormat::Docx2013);
document->Close();
delete document;
}
Word ドキュメントから改ページを削除する
誤って追加された改ページがあると、文書全体の構造が乱れてしまうので、それを削除することはかなり必要です。以下は、Word 文書で改ページを削除する手順です。
- Document のインスタンスを作成します。
- Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
- 最初のセクションの各段落をループし、次に段落の各子オブジェクトをループします。
- 子オブジェクトのタイプが改ページであるかどうかを判断します。もしそうなら、Paragraph->GetChildObjects()->Remove() メソッドを使用して、段落から改ページを削除します。
- Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
- C++
#include "Spire.Doc.o.h"
using namespace Spire::Doc;
int main() {
//入力ファイル、出力ファイルのパスを指定する
std::wstring inputFile = L"Output/段落の後に改ページを挿入.docx";
std::wstring outputFile = L"Output/改ページの削除.docx";
//Documentのインスタンスを作成する
Document* document = new Document();
//Word ドキュメントを読み込む
document->LoadFromFile(inputFile.c_str());
//1つ目のセクションの各段落をループする
for (int j = 0; j < document->GetSections()->GetItem(0)->GetParagraphs()->GetCount(); j++)
{
Paragraph* p = document->GetSections()->GetItem(0)->GetParagraphs()->GetItem(j);
//段落の各子オブジェクトをループする
for (int i = 0; i < p->GetChildObjects()->GetCount(); i++)
{
DocumentObject* obj = p->GetChildObjects()->GetItem(i);
//子オブジェクトの種類が改ページかどうかを判断する
if (obj->GetDocumentObjectType() == DocumentObjectType::Break)
{
Break* b = dynamic_cast<Break*>(obj);
//段落から改ページを削除する
p->GetChildObjects()->Remove(b);
}
}
}
//ドキュメントを保存する
document->SaveToFile(outputFile.c_str(), FileFormat::Docx2013);
document->Close();
delete document;
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。