Робота з верхніми і нижніми колонтитулами

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-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, а потім вказати значення HeaderPrimary та HeaderEven або FooterPrimary та FooterEven.

// 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, напівжирний шрифт, розмір 14 і вирівнювання по центру:

// 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 дозволяє створити зовнішній вигляд верхнього або нижнього колонтитула при використанні різних орієнтацій і розмірів сторінок.

Наступний приклад показує, як це зробити:

Як видалити лише верхні або лише колонтитули

Кожен розділ документа може містити до трьох верхніх і до трьох нижніх колонтитулів (для першої, парної і непарної сторінок). Якщо ви хочете видалити всі верхні або всі колонтитули в документі, вам потрібно пройти всі розділи та видалити кожен відповідний вузол верхнього або нижнього колонтитула.

Наступний приклад коду показує, як видалити всі колонтитули з усіх розділів, але залишити верхні колонтитули недоторканими. Подібним чином можна видалити лише верхні колонтитули:

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