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

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

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

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

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

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

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

ヘッダーまたはフッターのタイプを指定する

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

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

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

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

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

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

# 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 を使用すると、さまざまな向きやページ サイズを使用するときにヘッダーまたはフッターの外観を提供できます。

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

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

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

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

# 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")