Práce s záhlaví a zápatí

Aspose.Words umožňuje uživatelům pracovat s záhlaví a zápatí v dokumentu. Záhlaví je text, který je umístěn v horní části stránky, a zápatí je text v dolní části stránky. Tyto oblasti se obvykle používají k vkládání informací, které by se měly opakovat na všech nebo některých stránkách dokumentu, jako jsou čísla stránek, datum vytvoření, informace o společnosti atd.

Vytvořte záhlaví nebo zápatí pomocí DocumentBuilder

Pokud chcete programově přidat záhlaví nebo zápatí dokumentu, nejjednodušší je použít k tomu třídu DocumentBuilder.

Následující příklad kódu ukazuje, jak přidat záhlaví a zápatí pro stránky dokumentu:

Určete možnosti záhlaví nebo zápatí

Když do dokumentu přidáte záhlaví nebo zápatí, můžete nastavit některé pokročilé vlastnosti. Aspose.Words poskytuje uživatelům třídy HeaderFooter a HeaderFooterCollection a také výčet HeaderFooterType, který vám dává větší kontrolu nad procesem přizpůsobení záhlaví a zápatí.

Zadejte typ záhlaví nebo zápatí

Pro jeden dokument můžete zadat tři různé typy záhlaví a tři různé typy zápatí:

  1. Záhlaví a / nebo zápatí pro první stránku
  2. Záhlaví a / nebo zápatí pro sudé stránky
  3. Záhlaví a / nebo zápatí pro liché stránky

Následující příklad kódu ukazuje, jak přidat záhlaví pro liché stránky dokumentu:

Určete, zda chcete pro první stránku zobrazit různá záhlaví nebo zápatí

Jak bylo uvedeno výše, můžete také nastavit jinou záhlaví nebo zápatí pro první stránku. Chcete-li to provést, musíte nastavit příznak DifferentFirstPageHeaderFooter na true a poté specifikovat hodnotu HeaderFirst nebo FooterFirst.

Následující příklad kódu ukazuje, jak nastavit záhlaví pouze pro první stránku:

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

Určete, zda chcete zobrazit různá záhlaví nebo zápatí pro liché nebo sudé stránky

Dále budete chtít nastavit různá záhlaví nebo zápatí pro liché a sudé stránky v dokumentu. Chcete-li to provést, musíte nastavit příznak OddAndEvenPagesHeaderFooter na true a poté specifikovat hodnoty HeaderPrimary a HeaderEven nebo FooterPrimary a 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");

Vložte do záhlaví absolutně umístěný obrázek

Chcete-li umístit obrázek do záhlaví nebo zápatí, Použijte typ záhlaví HeaderPrimary nebo typ zápatí FooterPrimary a metodu InsertImage.

Následující příklad kódu ukazuje, jak přidat obrázek do záhlaví:

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

Nastavení vlastností písma a odstavce pro text záhlaví nebo zápatí

Pomocí Aspose.Words můžete nastavit vlastnosti písma a odstavce, použít typ záhlaví HeaderPrimary nebo typ zápatí FooterPrimary, stejně jako metody a vlastnosti pro práci s písmy a odstavci, které používáte pro tělo dokumentu.

Následující příklad kódu ukazuje, jak nastavit text v záhlaví na Arial, bold, velikost 14 a zarovnání na střed:

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

Vložte čísla stránek do záhlaví nebo zápatí

V případě potřeby můžete do záhlaví nebo zápatí přidat čísla stránek. Chcete-li to provést, použijte typ záhlaví HeaderPrimary nebo typ zápatí FooterPrimary a metodu InsertField k přidání požadovaného pole.

Následující příklad kódu ukazuje, jak přidat čísla stránek do zápatí vpravo:

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

Použijte záhlaví nebo zápatí definované v předchozí části

Pokud potřebujete zkopírovat záhlaví nebo zápatí z předchozí části, můžete to udělat také.

Následující příklad kódu ukazuje, jak zkopírovat záhlaví nebo zápatí z předchozí části:

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

Zajistěte vzhled záhlaví nebo zápatí při použití různých orientací stránky a velikosti stránky

Aspose.Words umožňuje poskytnout vzhled záhlaví nebo zápatí při použití různých orientací a velikostí stránek.

Následující příklad ukazuje, jak to udělat:

Jak odstranit pouze záhlaví nebo pouze zápatí

Každá sekce v dokumentu může mít až tři záhlaví a až tři zápatí (pro první, sudé a liché stránky). Pokud chcete odebrat všechna záhlaví nebo všechna zápatí v dokumentu, musíte procházet všemi sekcemi a odstranit každý odpovídající uzel záhlaví nebo uzel zápatí.

Následující příklad kódu ukazuje, jak odstranit všechny zápatí ze všech oddílů, ale ponechat záhlaví neporušená. Podobným způsobem můžete odebrat pouze záhlaví:

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