使用页眉和页脚

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

使用 DocumentBuilder 创建页眉或页脚

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

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

指定页眉或页脚选项

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

指定页眉或页脚类型

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

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

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

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

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

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

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.page_setup.different_first_page_header_footer = True
builder.move_to_header_footer(aw.HeaderFooterType.HEADER_FIRST)
builder.write("Header for the first page.")
builder.move_to_header_footer(aw.HeaderFooterType.FOOTER_FIRST)
builder.write("Footer for the first page.")
builder.move_to_section(0)
builder.writeln("Page 1")
builder.insert_break(aw.BreakType.PAGE_BREAK)
builder.writeln("Page 2")
doc.save(ARTIFACTS_DIR + "WorkingWithHeadersAndFooters.different_first_page.docx")

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

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

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.page_setup.odd_and_even_pages_header_footer = True
builder.move_to_header_footer(aw.HeaderFooterType.HEADER_EVEN)
builder.write("Header for even pages.")
builder.move_to_header_footer(aw.HeaderFooterType.HEADER_PRIMARY)
builder.write("Header for odd pages.")
builder.move_to_header_footer(aw.HeaderFooterType.FOOTER_EVEN)
builder.write("Footer for even pages.")
builder.move_to_header_footer(aw.HeaderFooterType.FOOTER_PRIMARY)
builder.write("Footer for odd pages.")
builder.move_to_section(0)
builder.writeln("Page 1")
builder.insert_break(aw.BreakType.PAGE_BREAK)
builder.writeln("Page 2")
doc.save(ARTIFACTS_DIR + "WorkingWithHeadersAndFooters.odd_even_pages.docx")

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

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

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

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.move_to_header_footer(aw.HeaderFooterType.HEADER_PRIMARY)
builder.insert_image(IMAGES_DIR + "Logo.jpg",
aw.drawing.RelativeHorizontalPosition.RIGHT_MARGIN,
10, aw.drawing.RelativeVerticalPosition.PAGE, 10, 50, 50,
aw.drawing.WrapType.THROUGH)
doc.save(ARTIFACTS_DIR + "WorkingWithHeadersAndFooters.insert_image.docx")
view raw insert-image.py 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-Python-via-.NET.git.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.move_to_header_footer(aw.HeaderFooterType.HEADER_PRIMARY)
builder.paragraph_format.alignment = aw.ParagraphAlignment.CENTER
builder.font.name = "Arial"
builder.font.bold = True
builder.font.size = 14
builder.write("Header for pages.")
doc.save(ARTIFACTS_DIR + "WorkingWithHeadersAndFooters.font_props.docx")
view raw font-props.py hosted with ❤ by GitHub

将页码插入页眉或页脚

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

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

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.move_to_header_footer(aw.HeaderFooterType.FOOTER_PRIMARY)
builder.paragraph_format.alignment = aw.ParagraphAlignment.CENTER
builder.write("Page ")
builder.insert_field("PAGE", "")
builder.write(" of ")
builder.insert_field("NUMPAGES", "")
doc.save(ARTIFACTS_DIR + "WorkingWithHeadersAndFooters.page_numbers.docx")
view raw page-numbers.py hosted with ❤ by GitHub

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

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

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

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
@staticmethod
def copy_headers_footers_from_previous_section(section):
"""Clones and copies headers/footers form the previous section to the specified section."""
previous_section = section.previous_sibling.as_section()
if previous_section is None:
return
section.headers_footers.clear()
for header_footer in previous_section.headers_footers:
section.headers_footers.add(header_footer.clone(True))

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

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

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

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

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

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

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Header and footer types.docx")
for section in doc:
section = section.as_section()
# Up to three different footers are possible in a section (for first, even and odd pages)
# we check and delete all of them.
footer = section.headers_footers.get_by_header_footer_type(aw.HeaderFooterType.FOOTER_FIRST)
if footer is not None:
footer.remove()
# Primary footer is the footer used for odd pages.
footer = section.headers_footers.get_by_header_footer_type(aw.HeaderFooterType.FOOTER_PRIMARY)
if footer is not None:
footer.remove()
footer = section.headers_footers.get_by_header_footer_type(aw.HeaderFooterType.FOOTER_EVEN)
if footer is not None:
footer.remove()
doc.save(ARTIFACTS_DIR + "RemoveContent.remove_footers.docx")