Praca z nagłówkami i stopkami

Aspose.Words umożliwia użytkownikom pracę z nagłówkami i stopkami w dokumencie. Nagłówek to tekst umieszczony u góry strony, a stopka to tekst u dołu strony. Zazwyczaj te obszary służą do wstawiania informacji, które należy powtórzyć na wszystkich lub niektórych stronach dokumentu, takich jak numery stron, Data utworzenia, informacje o firmie i tak dalej.

Utwórz nagłówki lub stopki za pomocą DocumentBuilder

Jeśli chcesz programowo dodać nagłówek lub stopkę dokumentu, najłatwiej jest użyć do tego klasy DocumentBuilder.

Poniższy przykład kodu pokazuje, jak dodać nagłówek i stopkę do stron dokumentu:

Określ opcje nagłówka lub stopki

Po dodaniu nagłówka lub stopki do dokumentu można ustawić niektóre zaawansowane właściwości. Aspose.Words zapewnia użytkownikom klasy HeaderFooter i HeaderFooterCollection, a także HeaderFooterType wyliczenie, które daje większą kontrolę nad procesem dostosowywania nagłówka i stopki.

Określ typ nagłówka lub stopki

Dla jednego dokumentu można określić trzy różne typy nagłówków i trzy różne typy stopek:

  1. Nagłówek i / lub stopka pierwszej strony
  2. Nagłówek i / lub stopka dla parzystych stron
  3. Nagłówek i / lub stopka dla stron nieparzystych

Poniższy przykład kodu pokazuje, jak dodać nagłówek dla nieparzystych stron dokumentu:

Określ, czy na pierwszej stronie mają być wyświetlane różne nagłówki czy stopki

Jak wspomniano powyżej, możesz również ustawić inny nagłówek lub stopkę dla pierwszej strony. Aby to zrobić, musisz ustawić flagę DifferentFirstPageHeaderFooter na true, a następnie podać wartość HeaderFirst lub FooterFirst.

Poniższy przykład kodu pokazuje, jak ustawić nagłówek tylko dla pierwszej strony:

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

Określ, czy mają być wyświetlane różne nagłówki lub stopki dla stron nieparzystych czy parzystych

Następnie będziesz chciał ustawić różne nagłówki lub stopki dla stron nieparzystych i parzystych w dokumencie. Aby to zrobić, musisz ustawić flagę OddAndEvenPagesHeaderFooter na true, a następnie określić wartości HeaderPrimary i HeaderEven lub FooterPrimary i 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");

Wstaw absolutnie umieszczony obraz do nagłówka

Aby umieścić obraz w nagłówku lub stopce, użyj HeaderPrimary typ nagłówka lub FooterPrimary Typ stopki i Metoda InsertImage.

Poniższy przykład kodu pokazuje, jak dodać obraz do nagłówka:

// 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

Ustaw właściwości czcionki i akapitu dla tekstu nagłówka lub stopki

Za pomocą Aspose.Words możesz ustawić właściwości czcionki i akapitu, użyć typu Nagłówka HeaderPrimary lub typu Stopki FooterPrimary, a także metod i właściwości do pracy z czcionkami i akapitami używanymi w treści dokumentu.

Poniższy przykład kodu pokazuje, jak ustawić tekst w nagłówku na Arial, bold, rozmiar 14 i wyrównanie do środka:

// 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

Wstaw numery stron do nagłówka lub stopki

W razie potrzeby możesz dodać numery stron do nagłówka lub stopki. Aby to zrobić, użyj typu nagłówka HeaderPrimary lub typu stopki FooterPrimary i metody InsertField, aby dodać wymagane pole.

Poniższy przykład kodu pokazuje, jak dodać numery stron do stopki po prawej stronie:

// 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

Użyj nagłówków lub stopek zdefiniowanych w poprzedniej sekcji

Jeśli chcesz skopiować nagłówek lub stopkę z poprzedniej sekcji, możesz to również zrobić.

Poniższy przykład kodu pokazuje, jak skopiować nagłówek lub stopkę z poprzedniej sekcji:

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

Zapewnij wygląd nagłówka lub stopki podczas korzystania z różnych orientacji strony i rozmiaru strony

Aspose.Words pozwala zapewnić wygląd nagłówka lub stopki przy użyciu różnych orientacji i rozmiarów stron.

Poniższy przykład pokazuje, jak to zrobić:

Jak usunąć tylko nagłówki lub tylko stopki

Każda sekcja w dokumencie może mieć do trzech nagłówków i do trzech stopek (dla stron pierwszych, parzystych i nieparzystych). Jeśli chcesz usunąć wszystkie nagłówki lub wszystkie stopki w dokumencie, musisz przejrzeć wszystkie sekcje i usunąć każdy odpowiedni węzeł nagłówka lub węzeł stopki.

Poniższy przykład kodu pokazuje, jak usunąć wszystkie stopki ze wszystkich sekcji, ale pozostawić nienaruszone nagłówki. Możesz usunąć tylko nagłówki w podobny sposób:

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