分割Word文書C++

MS Wordは、情報を保存および共有するための一般的な形式です。 Word文書を複数のファイルに分割したいシナリオがあるかもしれません。たとえば、ドキュメントには、さまざまな人と共有する必要のあるさまざまなセクションが含まれている場合や、分離する必要のある機密情報が含まれている場合があります。このような場合、Word文書を分割すると便利です。この記事では、C++を使用してMSWord文書を分割する方法を学習します。

Word文書を分割するためのC++API

Aspose.Words for C++は、Microsoft Wordドキュメントの生成、変更、変換を可能にするネイティブC++ライブラリです。さらに、Word文書を複数のファイルに分割することもサポートしています。 APIは、NuGetからインストールするか、ダウンロードセクションから直接ダウンロードできます。

PM> Install-Package Aspose.Words.Cpp

C++を使用してページごとにWord文書を分割する

以下は、C++を使用してWordファイルを分割する手順です。

  • Documentクラスを使用してWord文書をロードします。
  • DocumentPageSplitterクラスのインスタンスを作成し、前の手順で作成したDocumentオブジェクトで初期化します。
  • ドキュメントのページをループします。
  • DocumentPageSplitter.GetDocumentOfPage(int32_t PageIndex)メソッドを使用して各ページを抽出します。
  • Document->Save(System::String fileName)メソッドを使用してドキュメントを保存します。

以下は、Word文書をページごとに分割するためのサンプルコードです。

// サンプルWord文書
System::String sampleFile = u"SourceDirectory\\Sample 3.docx";

// Wordドキュメントをロードする
System::SharedPtr<Aspose::Words::Document> document = System::MakeObject<Aspose::Words::Document>(sampleFile);

// ドキュメントページスプリッターの作成と初期化
DocumentPageSplitter splitter = DocumentPageSplitter(document);

// 出力ファイルパス
System::String outputPath = u"OutputDirectory\\";

// 各ページを個別のドキュメントとして保存
for (int page = 1; page <= document->get_PageCount(); page++)
{
    auto pageDoc = splitter.GetDocumentOfPage(page);
    pageDoc->Save(outputPath + u"SplitDocumentPageByPageOut_" + System::Convert::ToString(page) + u".docx");
}

ページ範囲を使用してWord文書を分割する

すべてのページを区切る代わりに、ページ範囲を指定してWord文書を分割することもできます。以下は、ページ範囲を使用してWord文書を分割する手順です。

  • まず、Documentクラスを使用してWordドキュメントをロードします。
  • DocumentPageSplitterクラスのインスタンスを作成し、前のステップのDocumentオブジェクトで初期化します。
  • DocumentPageSplitter.GetDocumentOfPageRange(int32_t pageIndex、int32_t pageIndex)メソッドを使用して、必要な範囲のページを取得します。
  • 最後に、Document->Save(System::String fileName)メソッドを使用してWord文書を保存します。

以下は、ページ範囲を使用してWord文書を分割するためのサンプルコードです。

// サンプルWord文書
System::String sampleFile = u"SourceDirectory\\Sample 3.docx";

// Wordドキュメントをロードする
System::SharedPtr<Aspose::Words::Document> document = System::MakeObject<Aspose::Words::Document>(sampleFile);

// ドキュメントページスプリッターの作成と初期化
DocumentPageSplitter splitter = DocumentPageSplitter(document);

// ページ範囲を取得する
auto pageDoc = splitter.GetDocumentOfPageRange(2, 3);

// 出力ファイルパス
System::String outputPath = u"OutputDirectory\\";

// DOCXファイルとして保存
pageDoc->Save(outputPath + u"SplitDocumentByPageRangeOut.docx");

C++を使用してWord文書をセクションごとに分割する

Wordファイルには、フォーマットが異なり、任意の数のページで構成される1つ以上のセクションを含めることができます。 Wordファイルに新しいセクションを追加するには、[レイアウト]>[ブレーク]>[セクションブレーク]オプションを使用します。以下は、Aspose.Words for C++APIを使用してWordファイルをセクションごとに分割する手順です。

以下は、Word文書をセクションごとに分割するためのサンプルコードです。

// サンプルWord文書
System::String sampleFile = u"SourceDirectory\\Sample 3.docx";

// Wordドキュメントをロードする
System::SharedPtr<Aspose::Words::Document> document = System::MakeObject<Aspose::Words::Document>(sampleFile);

// 出力ファイルパス
System::String outputPath = u"OutputDirectory\\";

for (int i = 0; i < document->get_Sections()->get_Count(); i++)
{
    // ドキュメントを小さな部分に分割します。この場合はセクションごとに分割します
    auto section = document->get_Sections()->idx_get(i)->Clone();

    // 新しいドキュメントを作成する
    auto newDoc = System::MakeObject<Aspose::Words::Document>();
    newDoc->get_Sections()->Clear();

    //新しく作成したドキュメントに新しいセクションを追加します
    auto newSection = System::StaticCast<Aspose::Words::Section>(newDoc->ImportNode(section, true));
    newDoc->get_Sections()->Add(newSection);

    // 各セクションを個別のドキュメントとして保存
    newDoc->Save(outputPath + u"SplitDocumentBySectionsOut_" + System::Convert::ToString(i) + u".docx");
}

無料ライセンスを取得する

無料の一時ライセンスをリクエストすることで、評価の制限なしにAPIを試すことができます。

結論

この記事では、C++を使用してWord文書を複数のファイルに分割する方法を学習しました。 Aspose.Words for C++ APIを使用して、Word文書をページ、ページ範囲、およびセクションごとに分割する方法を学習しました。 公式ドキュメントを使用して、APIを詳細に調べることができます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。

関連項目