Работа с заголовками и футерами

Aspose.Words позволяет пользователям работать с заголовками и нижними колонками в документе. Заголовок - это текст, который размещен в верхней части страницы, а нижний колонтитул - это текст в нижней части страницы. Как правило, эти области используются для вставки информации, которая должна повторяться на всех или некоторых страницах документа, таких как номера страниц, дата создания, информация о компании и так далее.

Создание заголовков или футеров с помощью DocumentBuilder

Если вы хотите добавить заголовок документа или нижний колонтитул программно, самый простой способ - использовать заголовок документа. DocumentBuilder Класс, чтобы сделать это.

Следующий пример кода показывает, как добавить заголовок и футер для страниц документа:

Укажите опции заголовка или подноса

Когда вы добавляете заголовок или нижний колонтитул к документу, вы можете установить некоторые расширенные свойства. Aspose.Words Предоставляет пользователям HeaderFooter и HeaderFooterCollection классов, а также HeaderFooterType Перечисление, которое дает вам больше контроля над процессом настройки заголовка и колонки.

Укажите тип заголовка или подъемника

Вы можете указать три разных типа заголовков и три разных типа колонок для одного документа:

  1. Заголовок и/или нижний колонтитул для первой страницы
  2. Заголовок и/или нижний колонтитул даже для страниц
  3. Заголовок и/или футер для нечетных страниц

Следующий пример кода показывает, как добавить заголовок для странных страниц документа:

Укажите, отображать ли разные заголовки или футеры для первой страницы

Как было сказано выше, вы также можете установить другой заголовок или нижний колонтитул для первой страницы. Для этого вам необходимо установить DifferentFirstPageHeaderFooter флаг true а затем подражать HeaderFirst или FooterFirst ценность.

Следующий пример кода показывает, как установить заголовок только для первой страницы:

// 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 а затем подражать ценностям HeaderPrimary и HeaderEven, или FooterPrimary и FooterEven.

// 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");