Trabalhando com cabeçalhos e rodapés

Aspose.Words permite aos usuários trabalhar com cabeçalhos e rodapés em um documento. Um cabeçalho é o texto colocado na parte superior de uma página e um rodapé é o texto na parte inferior de uma página. Normalmente, essas áreas são utilizadas para inserir informações que devem ser repetidas em todas ou algumas páginas do documento, como números de páginas, data de criação, informações da empresa e assim por diante.

Crie cabeçalhos ou rodapés usando DocumentBuilder

Se você deseja adicionar um cabeçalho ou rodapé de documento programaticamente, a maneira mais fácil é usar a classe DocumentBuilder para fazer isso.

O exemplo de código a seguir mostra como adicionar um cabeçalho e um rodapé às páginas do documento:

Especifique opções de cabeçalho ou rodapé

Ao adicionar um cabeçalho ou rodapé a um documento, você pode definir algumas propriedades avançadas. Aspose.Words fornece aos usuários classes HeaderFooter e HeaderFooterCollection, bem como enumeração HeaderFooterType que oferecem mais controle sobre o processo de personalização de cabeçalho e rodapé.

Especifique o tipo de cabeçalho ou rodapé

Você pode especificar três tipos diferentes de cabeçalho e três tipos diferentes de rodapé para um documento:

  1. Cabeçalho e/ou rodapé da primeira página
  2. Cabeçalho e/ou rodapé para páginas pares
  3. Cabeçalho e/ou rodapé para páginas ímpares

O exemplo de código a seguir mostra como adicionar um cabeçalho para páginas ímpares do documento:

Especifique se deseja exibir cabeçalhos ou rodapés diferentes para a primeira página

Como dito acima, você também pode definir um cabeçalho ou rodapé diferente para a primeira página. Para fazer isso, você precisa definir o sinalizador DifferentFirstPageHeaderFooter como true e então especificar o valor HeaderFirst ou FooterFirst.

O exemplo de código a seguir mostra como definir o cabeçalho apenas para a primeira página:

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

Especifique se deseja exibir cabeçalhos ou rodapés diferentes para páginas pares ou ímpares

Em seguida, você desejará definir cabeçalhos ou rodapés diferentes para páginas pares e ímpares de um documento. Para fazer isso, você precisa definir o sinalizador OddAndEvenPagesHeaderFooter como true e então especificar os valores HeaderPrimary e HeaderEven, ou FooterPrimary e 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");

Insira uma imagem absolutamente posicionada no cabeçalho

Para colocar uma imagem em um cabeçalho ou rodapé, use o tipo de cabeçalho HeaderPrimary ou o tipo de rodapé FooterPrimary e o método InsertImage.

O exemplo de código a seguir mostra como adicionar uma imagem a um cabeçalho:

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

Definir propriedades de fonte e parágrafo para texto de cabeçalho ou rodapé

Com Aspose.Words você pode definir as propriedades de fonte e parágrafo, usar o tipo de cabeçalho HeaderPrimary ou o tipo de rodapé FooterPrimary, bem como métodos e propriedades para trabalhar com as fontes e parágrafos usados no corpo do documento.

O exemplo de código a seguir mostra como definir o texto no cabeçalho como Arial, negrito, tamanho 14 e alinhamento central:

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

Insira números de página no cabeçalho ou rodapé

Se necessário, você pode adicionar números de página ao cabeçalho ou rodapé. Para fazer isso, use o tipo de cabeçalho HeaderPrimary ou o tipo de rodapé FooterPrimary e o método InsertField para adicionar o campo obrigatório.

O exemplo de código a seguir mostra como adicionar números de página ao rodapé à direita:

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

Use cabeçalhos ou rodapés definidos na seção anterior

Se precisar copiar o cabeçalho ou rodapé da seção anterior, você também pode fazer isso.

O exemplo de código a seguir mostra como copiar o cabeçalho ou rodapé da seção anterior:

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

Garanta a aparência do cabeçalho ou rodapé ao usar diferentes orientações e tamanhos de página

Aspose.Words permite fornecer a aparência de um cabeçalho ou rodapé ao usar diferentes orientações e tamanhos de página.

O exemplo a seguir mostra como fazer isso:

Como remover apenas cabeçalhos ou rodapés

Cada seção de um documento pode ter até três cabeçalhos e até três rodapés (para primeiras páginas, pares e ímpares). Se quiser remover todos os cabeçalhos ou rodapés de um documento, você precisará percorrer todas as seções e remover cada nó de cabeçalho ou rodapé correspondente.

O exemplo de código a seguir mostra como remover todos os rodapés de todas as seções, mas deixar os cabeçalhos intactos. Você pode remover apenas cabeçalhos de maneira semelhante:

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