Trabalhar com cabeçalhos e rodapés

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

Criar cabeçalhos ou rodapés utilizando 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 rodapé para páginas de documentos:

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

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

Especificar o tipo de cabeçalho ou rodapé

É possível especificar três tipos de cabeçalho e três tipos de rodapé diferentes 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 de documentos ímpares:

Especifique se pretende apresentar 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 para true e, em seguida, 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-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Specify that we want different headers and footers for first page.
builder.getPageSetup().setDifferentFirstPageHeaderFooter(true);
builder.moveToHeaderFooter(HeaderFooterType.HEADER_FIRST);
builder.write("Header for the first page.");
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_FIRST);
builder.write("Footer for the first page.");
builder.moveToSection(0);
builder.writeln("Page 1");
builder.insertBreak(BreakType.PAGE_BREAK);
builder.writeln("Page 2");
doc.save(getArtifactsDir() + "WorkingWithHeadersAndFooters.DifferentFirstPage.docx");

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

Em seguida, você desejará definir diferentes cabeçalhos ou rodapés para páginas ímpares e pares em um documento. Para fazer isso, você precisa definir o sinalizador OddAndEvenPagesHeaderFooter para true e, em seguida, 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-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Specify that we want different headers and footers for even and odd pages.
builder.getPageSetup().setOddAndEvenPagesHeaderFooter(true);
builder.moveToHeaderFooter(HeaderFooterType.HEADER_EVEN);
builder.write("Header for even pages.");
builder.moveToHeaderFooter(HeaderFooterType.HEADER_PRIMARY);
builder.write("Header for odd pages.");
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_EVEN);
builder.write("Footer for even pages.");
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_PRIMARY);
builder.write("Footer for odd pages.");
builder.moveToSection(0);
builder.writeln("Page 1");
builder.insertBreak(BreakType.PAGE_BREAK);
builder.writeln("Page 2");
doc.save(getArtifactsDir() + "WorkingWithHeadersAndFooters.OddEvenPages.docx");

Inserir 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-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.moveToHeaderFooter(HeaderFooterType.HEADER_PRIMARY);
builder.insertImage(getImagesDir() + "Logo.jpg", RelativeHorizontalPosition.RIGHT_MARGIN, 10,
RelativeVerticalPosition.PAGE, 10, 50, 50, WrapType.THROUGH);
doc.save(getArtifactsDir() + "WorkingWithHeadersAndFooters.InsertImage.docx");

Definir as propriedades da fonte e do parágrafo para o texto do 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 que você usa para o corpo do documento.

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.moveToHeaderFooter(HeaderFooterType.HEADER_PRIMARY);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
builder.getFont().setName("Arial");
builder.getFont().setBold(true);
builder.getFont().setSize(14);
builder.write("Header for page.");
doc.save(getArtifactsDir() + "WorkingWithHeadersAndFooters.HeaderFooterFontProps.docx");
view raw font-props.java hosted with ❤ by GitHub

Inserir números de Página no cabeçalho ou rodapé

Se necessário, 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-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_PRIMARY);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.RIGHT);
builder.write("Page ");
builder.insertField("PAGE", "");
builder.write(" of ");
builder.insertField("NUMPAGES", "");
doc.save(getArtifactsDir() + "WorkingWithHeadersAndFooters.PageNumbers.docx");

Utilizar cabeçalhos ou rodapés definidos na secção anterior

Se você precisar copiar o cabeçalho ou rodapé da seção anterior, também poderá 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-Java.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.getPreviousSibling();
if (previousSection == null)
return;
section.getHeadersFooters().clear();
for (HeaderFooter headerFooter : previousSection.getHeadersFooters())
section.getHeadersFooters().add(headerFooter.deepClone(true));
}

Garantir 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 apenas rodapés

Cada seção de um documento pode ter até três cabeçalhos e até três rodapés (para páginas iniciais, pares e ímpares). Se você deseja remover todos os cabeçalhos ou rodapés de um documento, é necessário 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-Java.git.
Document doc = new Document(getMyDir() + "Header and footer types.docx");
for (Section section : doc.getSections())
{
// 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.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_FIRST);
footer.remove();
// Primary footer is the footer used for odd pages.
footer = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_PRIMARY);
footer.remove();
footer = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_EVEN);
footer.remove();
}
doc.save(getArtifactsDir() + "RemoveContent.RemoveFooters.docx");