ヘッダーとフッターの操作

Aspose.Wordsドキュメント内のヘッダーとフッターを操作できます。 ヘッダーはページの上部に配置されるテキストであり、フッターはページの下部にあるテキストです。 通常、これらの領域は、ページ番号、作成日、会社情報など、文書のすべてまたは一部のページで繰り返す必要がある情報を挿入するために使用されます。

DocumentBuilderを使用してヘッダーまたはフッターを作成する

ドキュメントのヘッダーまたはフッターをプログラムで追加する場合、最も簡単な方法はDocumentBuilderクラスを使用してそれを行うことです。

次のコード例は、ドキュメントページのヘッダーとフッターを追加する方法を示しています:

ヘッダーまたはフッターのオプションの指定

ドキュメントにヘッダーまたはフッターを追加するときに、いくつかの高度なプロパティを設定できます。 Aspose.Wordsは、HeaderFooterクラスとHeaderFooterCollectionクラス、およびHeaderFooterType列挙体をユーザーに提供し、ヘッダーとフッターのカスタマイズプロセスをより詳細に制御します。Aspose.Wordsは、HeaderFooterクラスとHeaderFooterCollectionクラスをユーザーに提供します。

ヘッダーまたはフッターの種類を指定する

1つのドキュメントに対して、3つの異なるヘッダータイプと3つの異なるフッタータイプを指定できます:

  1. 最初のページのヘッダーおよび/またはフッター
  2. 偶数ページのヘッダーおよび/またはフッター
  3. 奇数ページのヘッダーおよび/またはフッター

次のコード例は、奇数ドキュメントページのヘッダーを追加する方法を示しています:

最初のページに異なるヘッダーまたはフッターを表示するかどうかを指定します

上で述べたように、最初のページに別のヘッダーまたはフッターを設定することもできます。 これを行うには、DifferentFirstPageHeaderFooterフラグをtrueに設定し、HeaderFirstまたはFooterFirst値を指定する必要があります。

次のコード例は、最初のページのヘッダーのみを設定する方法を示しています:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
// Specify that we want different headers and footers for first page.
builder->get_PageSetup()->set_DifferentFirstPageHeaderFooter(true);
builder->MoveToHeaderFooter(HeaderFooterType::HeaderFirst);
builder->Write(u"Header for the first page.");
builder->MoveToHeaderFooter(HeaderFooterType::FooterFirst);
builder->Write(u"Footer for the first page.");
builder->MoveToSection(0);
builder->Writeln(u"Page 1");
builder->InsertBreak(BreakType::PageBreak);
builder->Writeln(u"Page 2");
doc->Save(ArtifactsDir + u"WorkingWithHeadersAndFooters.DifferentFirstPage.docx");

奇数ページまたは偶数ページに異なるヘッダーまたはフッターを表示するかどうかを指定します

次に、ドキュメント内の奇数ページと偶数ページに異なるヘッダーまたはフッターを設定する必要があります。 これを行うには、OddAndEvenPagesHeaderFooterフラグをtrueに設定し、値HeaderPrimaryHeaderEven、またはFooterPrimaryFooterEvenを指定する必要があります。

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
// Specify that we want different headers and footers for even and odd pages.
builder->get_PageSetup()->set_OddAndEvenPagesHeaderFooter(true);
builder->MoveToHeaderFooter(HeaderFooterType::HeaderEven);
builder->Write(u"Header for even pages.");
builder->MoveToHeaderFooter(HeaderFooterType::HeaderPrimary);
builder->Write(u"Header for odd pages.");
builder->MoveToHeaderFooter(HeaderFooterType::FooterEven);
builder->Write(u"Footer for even pages.");
builder->MoveToHeaderFooter(HeaderFooterType::FooterPrimary);
builder->Write(u"Footer for odd pages.");
builder->MoveToSection(0);
builder->Writeln(u"Page 1");
builder->InsertBreak(BreakType::PageBreak);
builder->Writeln(u"Page 2");
doc->Save(ArtifactsDir + u"WorkingWithHeadersAndFooters.OddEvenPages.docx");

絶対に配置された画像をヘッダーに挿入します

ヘッダーまたはフッターに画像を配置するには、HeaderPrimaryヘッダータイプまたはFooterPrimaryフッタタイプとInsertImageメソッドを使用します。

次のコード例は、ヘッダーにイメージを追加する方法を示しています:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
builder->MoveToHeaderFooter(HeaderFooterType::HeaderPrimary);
builder->InsertImage(ImagesDir + u"Logo.jpg", RelativeHorizontalPosition::RightMargin, 10,
RelativeVerticalPosition::Page, 10, 50, 50, WrapType::Through);
doc->Save(ArtifactsDir + u"WorkingWithHeadersAndFooters.InsertImage.docx");
view raw insert-image.h hosted with ❤ by GitHub

ヘッダーまたはフッターのテキストのフォントと段落のプロパティを設定する

Aspose.Wordsを使用すると、フォントと段落のプロパティを設定したり、HeaderPrimaryヘッダタイプまたはFooterPrimaryフッタタイプを使用したり、文書本文に使用するフォントと段落を操作するためのメソッドとプロパティを使用したりできます。

次のコード例は、ヘッダー内のテキストをArial、bold、size14、およびcenter alignmentに設定する方法を示しています:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
builder->MoveToHeaderFooter(HeaderFooterType::HeaderPrimary);
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Center);
builder->get_Font()->set_Name(u"Arial");
builder->get_Font()->set_Bold(true);
builder->get_Font()->set_Size(14);
builder->Write(u"Header for page.");
doc->Save(ArtifactsDir + u"WorkingWithHeadersAndFooters.FontProps.docx");
view raw font-props.h hosted with ❤ by GitHub

ヘッダーまたはフッターにページ番号を挿入する

必要に応じて、ヘッダーまたはフッターにページ番号を追加できます。 これを行うには、HeaderPrimaryヘッダタイプまたはFooterPrimaryフッタタイプを使用し、InsertFieldメソッドを使用して必須フィールドを追加します。

次のコード例は、右側のフッターにページ番号を追加する方法を示しています:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>();
auto builder = MakeObject<DocumentBuilder>(doc);
builder->MoveToHeaderFooter(HeaderFooterType::FooterPrimary);
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Right);
builder->Write(u"Page ");
builder->InsertField(u"PAGE", u"");
builder->Write(u" of ");
builder->InsertField(u"NUMPAGES", u"");
doc->Save(ArtifactsDir + u"WorkingWithHeadersAndFooters.PageNumbers.docx");
view raw page-numbers.h hosted with ❤ by GitHub

前のセクションで定義したヘッダーまたはフッターを使用します

前のセクションのヘッダーまたはフッターをコピーする必要がある場合は、それも行うことができます。

次のコード例は、前のセクションのヘッダーまたはフッターをコピーする方法を示しています:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
/// <summary>
/// Clones and copies headers/footers form the previous section to the specified section.
/// </summary>
void CopyHeadersFootersFromPreviousSection(SharedPtr<Section> section)
{
auto previousSection = System::ExplicitCast<Section>(section->get_PreviousSibling());
if (previousSection == nullptr)
{
return;
}
section->get_HeadersFooters()->Clear();
for (const auto& headerFooter : System::IterateOver<HeaderFooter>(previousSection->get_HeadersFooters()))
{
section->get_HeadersFooters()->Add((System::ExplicitCast<Node>(headerFooter))->Clone(true));
}
}

異なるページの向きとページサイズを使用する場合は、ヘッダーまたはフッタの外観を確認してください

Aspose.Wordsを使用すると、異なる向きとページサイズを使用するときにヘッダーまたはフッターの外観を提供できます。

次の例は、これを行う方法を示しています:

ヘッダーのみまたはフッターのみを削除する方法

ドキュメント内の各セクションには、最大3つのヘッダーと最大3つのフッター(最初のページ、偶数ページ、および奇数ページの場合)を含めることができます。 ドキュメント内のすべてのヘッダーまたはすべてのフッターを削除する場合は、すべてのセクションをループして、対応する各ヘッダーノードまたはフッターノードを削除する必要があります。

次のコード例は、すべてのセクションからすべてのフッターを削除し、ヘッダーをそのまま残す方法を示しています。 同様の方法でヘッダーのみを削除できます:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C.git.
auto doc = MakeObject<Document>(MyDir + u"Header and footer types.docx");
for (const auto& section : System::IterateOver<Section>(doc))
{
// Up to three different footers are possible in a section (for first, even and odd pages)
// we check and delete all of them.
SharedPtr<HeaderFooter> footer = section->get_HeadersFooters()->idx_get(HeaderFooterType::FooterFirst);
if (footer != nullptr)
{
footer->Remove();
}
// Primary footer is the footer used for odd pages.
footer = section->get_HeadersFooters()->idx_get(HeaderFooterType::FooterPrimary);
if (footer != nullptr)
{
footer->Remove();
}
footer = section->get_HeadersFooters()->idx_get(HeaderFooterType::FooterEven);
if (footer != nullptr)
{
footer->Remove();
}
}
doc->Save(ArtifactsDir + u"RemoveContent.RemoveFooters.docx");