Praca z nagłówkami i stopkami

Aspose.Words umożliwia użytkownikom pracę z nagłówkami i stopkami w dokumencie. Nagłówek to tekst umieszczany na górze strony, a stopka to tekst na dole strony. Zazwyczaj w tych obszarach umieszczane są informacje, które powinny zostać powtórzone na wszystkich lub niektórych stronach dokumentu, takie jak numery stron, data utworzenia, informacje o firmie i tak dalej.

Twórz nagłówki i stopki za pomocą narzędzia DocumentBuilder

Jeśli chcesz programowo dodać nagłówek lub stopkę dokumentu, najłatwiej jest to zrobić za pomocą klasy DocumentBuilder.

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

Określ opcje nagłówka lub stopki

Dodając nagłówek lub stopkę do dokumentu, możesz ustawić pewne zaawansowane właściwości. Aspose.Words zapewnia użytkownikom klasy HeaderFooter i HeaderFooterCollection, a także wyliczenie HeaderFooterType, które zapewniają większą kontrolę nad procesem dostosowywania nagłówka i stopki.

Określ typ nagłówka lub stopki

Dla jednego dokumentu możesz 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 stron parzystych
  3. Nagłówek i/lub stopka 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 powiedziano powyżej, możesz także ustawić inny nagłówek lub stopkę dla pierwszej strony. Aby to zrobić, musisz ustawić flagę DifferentFirstPageHeaderFooter na true, a następnie określić 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-.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");

Określ, czy wyświetlać różne nagłówki i stopki dla stron nieparzystych i parzystych

Następnie będziesz chciał ustawić różne nagłówki i stopki dla stron nieparzystych i parzystych w dokumencie. Aby to zrobić należy ustawić flagę OddAndEvenPagesHeaderFooter na true, a następnie podać 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-.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");

Wstaw obraz umieszczony całkowicie w nagłówku

Aby umieścić obraz w nagłówku lub stopce, użyj typu nagłówka HeaderPrimary lub typu stopki FooterPrimary i metody 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-.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

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

W Aspose.Words możesz ustawić właściwości czcionki i akapitu, użyć typu nagłówka HeaderPrimary lub 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, pogrubienie, rozmiar 14 i wyrównanie do środka:

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

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

Użyj nagłówków i 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-.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));
}

Upewnij się, że nagłówek lub stopka mają wygląd w przypadku korzystania z różnych orientacji strony i rozmiaru strony

Aspose.Words umożliwia nadanie wyglądu nagłówka lub stopki w przypadku korzystania z różnych orientacji i rozmiarów strony.

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

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

Każda sekcja dokumentu może mieć maksymalnie trzy nagłówki i maksymalnie trzy stopki (dla stron pierwszej, parzystej i nieparzystej). Jeśli chcesz usunąć wszystkie nagłówki lub wszystkie stopki w dokumencie, musisz przejść przez wszystkie sekcje i usunąć każdy odpowiedni węzeł nagłówka lub stopki.

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

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