使用页眉和页脚

Aspose.Words 允许用户在文档中使用页眉和页脚。页眉是放置在页面顶部的文本,页脚是放置在页面底部的文本。通常,这些区域用于插入应在文档的所有页面或某些页面上重复的信息,例如页码、创建日期、公司信息等。

使用 DocumentBuilder 创建页眉或页脚

如果您想以编程方式添加文档页眉或页脚,最简单的方法是使用 DocumentBuilder 类来完成。

以下代码示例演示如何为文档页面添加页眉和页脚:

指定页眉或页脚选项

当您向文档添加页眉或页脚时,您可以设置一些高级属性。 Aspose.Words 为用户提供了 HeaderFooterHeaderFooterCollection 类以及 HeaderFooterType 枚举,使您可以更好地控制页眉和页脚自定义过程。

指定页眉或页脚类型

您可以为一个文档指定三种不同的页眉类型和三种不同的页脚类型:

  1. 第一页的页眉和/或页脚
  2. 偶数页的页眉和/或页脚
  3. 奇数页的页眉和/或页脚

以下代码示例显示如何为奇数文档页面添加页眉:

指定是否为首页显示不同的页眉或页脚

如上所述,您还可以为首页设置不同的页眉或页脚。为此,您需要将 DifferentFirstPageHeaderFooter 标志设置为 true,然后指定 HeaderFirstFooterFirst 值。

以下代码示例显示如何仅设置第一页的标题:

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

指定奇数页或偶数页是否显示不同的页眉或页脚

接下来,您需要为文档中的奇数页和偶数页设置不同的页眉或页脚。为此,您需要将 OddAndEvenPagesHeaderFooter 标志设置为 true,然后指定值 HeaderPrimaryHeaderEven,或 FooterPrimaryFooterEven

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

将绝对定位的图像插入标题中

要将图像放置在页眉或页脚中,请使用 HeaderPrimary 页眉类型或 FooterPrimary 页脚类型和 InsertImage 方法。

以下代码示例展示了如何将图像添加到标题:

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

设置页眉或页脚文本的字体和段落属性

使用 Aspose.Words,您可以设置字体和段落属性,使用 HeaderPrimary 页眉类型或 FooterPrimary 页脚类型,以及用于处理文档正文所用字体和段落的方法和属性。

以下代码示例演示如何将标题中的文本设置为 Arial、粗体、字号 14 和居中对齐:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.MoveToHeaderFooter(HeaderFooterType.HeaderPrimary);
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
builder.Font.Name = "Arial";
builder.Font.Bold = true;
builder.Font.Size = 14;
builder.Write("Header for page.");
doc.Save(ArtifactsDir + "WorkingWithHeadersAndFooters.FontProps.docx");
view raw font-props.cs hosted with ❤ by GitHub

将页码插入页眉或页脚

如有必要,您可以将页码添加到页眉或页脚。为此,请使用 HeaderPrimary 标头类型或 FooterPrimary 页脚类型和 InsertField 方法来添加所需字段。

以下代码示例演示如何将页码添加到右侧页脚:

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

使用上一节中定义的页眉或页脚

如果您需要复制上一节中的页眉或页脚,您也可以这样做。

以下代码示例演示如何复制上一节中的页眉或页脚:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
/// <summary>
/// Clones and copies headers/footers form the previous section to the specified section.
/// </summary>
private void CopyHeadersFootersFromPreviousSection(Section section)
{
Section previousSection = (Section)section.PreviousSibling;
if (previousSection == null)
return;
section.HeadersFooters.Clear();
foreach (HeaderFooter headerFooter in previousSection.HeadersFooters)
section.HeadersFooters.Add(headerFooter.Clone(true));
}

使用不同的页面方向和页面大小时确保页眉或页脚的外观

Aspose.Words 允许您在使用不同方向和页面大小时提供页眉或页脚的外观。

以下示例展示了如何执行此操作:

如何仅删除页眉或仅删除页脚

文档中的每个部分最多可以有三个页眉和三个页脚(对于第一页、偶数页和奇数页)。如果要删除文档中的所有页眉或所有页脚,则需要循环遍历所有部分并删除每个相应的页眉节点或页脚节点。

以下代码示例演示如何从所有部分中删除所有页脚,但保持页眉完好无损。您可以以类似的方式仅删除标头:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
Document doc = new Document(MyDir + "Header and footer types.docx");
foreach (Section section in doc)
{
// Up to three different footers are possible in a section (for first, even and odd pages)
// we check and delete all of them.
HeaderFooter footer = section.HeadersFooters[HeaderFooterType.FooterFirst];
footer?.Remove();
// Primary footer is the footer used for odd pages.
footer = section.HeadersFooters[HeaderFooterType.FooterPrimary];
footer?.Remove();
footer = section.HeadersFooters[HeaderFooterType.FooterEven];
footer?.Remove();
}
doc.Save(ArtifactsDir + "RemoveContent.RemoveFooters.docx");