Cabeçalho e Rodapé são comumente usados em documentos para mostrar informações importantes como número de página, tópico, capítulo, etc. Você pode adicionar, inserir, excluir ou remover cabeçalho e rodapé em documentos do Word DOCX DOC usando seus aplicativos Java. Neste artigo, aprenderemos sobre como adicionar ou remover cabeçalhos e rodapés. A seguir estão os tópicos que iremos explorar em detalhes:

Inserir ou remover a API de rodapé de cabeçalho – Instalação

Para trabalhar com cabeçalho e rodapé em documentos do Word, usaremos a API Aspose.Words for Java onde chamadas de API simples nos ajudarão a atingir os requisitos. Você pode baixar o arquivo JAR da seção de lançamentos ou copiar as seguintes configurações do Maven em seu projeto. A API será configurada por meio do repositório Maven e você poderá prosseguir com as etapas adicionais explicadas neste artigo.

Repositório:

<repositories>
    <repository>
        <id>AsposeJavaAPI</id>
        <name>Aspose Java API</name>
        <url>https://repository.aspose.com/repo/</url>
    </repository>
</repositories>

Dependência:

<dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-words</artifactId>
        <version>20.8</version>
        <classifier>jdk17</classifier>
    </dependency>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-words</artifactId>
        <version>20.8</version>
        <classifier>javadoc</classifier>
    </dependency>
</dependencies>

Adicionar cabeçalho e rodapé em documento do Word (DOCX/DOC) usando Java

Adicionar cabeçalho e rodapé em documentos do Word (DOCX/DOC) é um caso de uso básico, porém importante, de trabalhar com documentos de processamento de texto. No entanto, diferentes cenários são possíveis. Por exemplo, pode ser necessário adicionar uma imagem, uma tabela ou apenas algum texto na seção de cabeçalho e rodapé. Além disso, às vezes o cabeçalho e o rodapé são diferentes na página de título em comparação com outras páginas. Às vezes, o cabeçalho e o rodapé são diferentes em números de página pares e diferentes em números de página ímpares. Portanto, criamos um exemplo conciso e básico de adição de cabeçalho e rodapé em documentos do Word.

Aqui vamos inserir um rodapé de cabeçalho diferente na página de título (primeira página) e um rodapé de cabeçalho diferente na página seguinte. Considerando que a segunda página terá um rodapé de cabeçalho personalizado, incluindo imagem, texto e elemento de tabela. Você precisa seguir as etapas abaixo para adicionar ou inserir cabeçalho e rodapé em documentos do Word (DOCX/DOC) usando Java.

  1. Inicialize objetos de classe Document e DocumentBuilder
  2. Especifique que você deseja um rodapé de cabeçalho diferente para a página de título
  3. Definir propriedades de fonte para o texto do cabeçalho
  4. Criar cabeçalho e para páginas subsequentes
  5. Insira a tabela e defina o formato do número da página
  6. Salvar arquivo DOCX de saída

O código a seguir é baseado nestas etapas que mostram como adicionar cabeçalho e rodapé em documentos do Word (DOCX/DOC) programaticamente usando Java:

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Section currentSection = builder.getCurrentSection();
PageSetup pageSetup = currentSection.getPageSetup();

// Especifique se queremos que os cabeçalhos/rodapés da primeira página sejam diferentes das outras páginas.
// Você também pode usar a propriedade PageSetup.OddAndEvenPagesHeaderFooter para especificar
// cabeçalhos/rodapés diferentes para páginas pares e ímpares.
pageSetup.setDifferentFirstPageHeaderFooter(true);

// --- Criar cabeçalho para a primeira página. ---
pageSetup.setHeaderDistance(20);
builder.moveToHeaderFooter(HeaderFooterType.HEADER_FIRST);
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);

// Defina as propriedades da fonte para o texto do cabeçalho.
builder.getFont().setName("Arial");
builder.getFont().setBold(true);
builder.getFont().setSize(14);
// Especifique o título do cabeçalho para a primeira página.
builder.write("Aspose.Words Header/Footer Creation - Title Page.");

// --- Criar cabeçalho para outras páginas além da primeira. ---
pageSetup.setHeaderDistance(20);
builder.moveToHeaderFooter(HeaderFooterType.HEADER_PRIMARY);

// Insira a imagem absolutamente posicionada no canto superior/esquerdo do cabeçalho.
// A distância das bordas superior/esquerda da página é definida como 10 pontos.
String imageFileName = dataDir + "Aspose.Words.gif";
builder.insertImage(imageFileName, RelativeHorizontalPosition.PAGE, 10, RelativeVerticalPosition.PAGE, 10, 50, 50, WrapType.THROUGH);

builder.getParagraphFormat().setAlignment(ParagraphAlignment.RIGHT);
// Especifique outro título de cabeçalho para outras páginas.
builder.write("Aspose.Words Header/Footer Creation");

// --- Criar rodapé para outras páginas além da primeira. ---
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_PRIMARY);

// Usamos tabela com duas células para fazer uma parte do texto na linha (com numeração de página)
// a ser alinhado à esquerda, e a outra parte do texto (com direitos autorais) a ser alinhada à direita.
builder.startTable();

// Limpar bordas da mesa
builder.getCellFormat().clearFormatting();

builder.insertCell();
// Defina a primeira célula para 1/3 da largura da página.
builder.getCellFormat().setPreferredWidth(PreferredWidth.fromPercent(100 / 3));

// Insira o texto de numeração de página aqui.
// Ele usa os campos PAGE e NUMPAGES para calcular automaticamente o número da página atual e o número total de páginas.
builder.write("Page ");
builder.insertField("PAGE", "");
builder.write(" of ");
builder.insertField("NUMPAGES", "");

// Alinhe este texto à esquerda.
builder.getCurrentParagraph().getParagraphFormat().setAlignment(ParagraphAlignment.LEFT);

builder.insertCell();
// Defina a segunda célula para 2/3 da largura da página.
builder.getCellFormat().setPreferredWidth(PreferredWidth.fromPercent(100 * 2 / 3));

builder.write("(C) 2020 Aspose Pty Ltd. All rights reserved.");

// Alinhe este texto à direita.
builder.getCurrentParagraph().getParagraphFormat().setAlignment(ParagraphAlignment.RIGHT);

builder.endRow();
builder.endTable();

builder.moveToDocumentEnd();
// Faça quebra de página para criar uma segunda página na qual os cabeçalhos/rodapés primários serão vistos.
builder.insertBreak(BreakType.PAGE_BREAK);

// Salve o documento resultante.
doc.save(dataDir + "HeaderFooter_Out.docx");

Até agora aprendemos como adicionar ou inserir cabeçalho e rodapé em arquivos do Word. Abaixo está uma captura de tela de como a saída fica quando você a vê na opção Visualizar impressão.

Este recurso pode ajudar muito quando diferentes documentos DOC/DOCX são processados por seus aplicativos onde você deseja adicionar algum conteúdo como rodapé de cabeçalho de documentos de saída.

Adicionar ou remover o rodapé do cabeçalho

Vamos verificar a exclusão do cabeçalho e rodapé dos arquivos do MS Word (DOCX/DOC).

Excluir cabeçalho e rodapé de documento do Word (DOCX/DOC) usando Java

Você pode excluir o cabeçalho, bem como o rodapé de documentos do Word usando Aspose.Words for Java API. Conforme discutido acima, pode haver três tipos diferentes de cabeçalho e rodapé adicionados em um documento. Por exemplo, na página de título, nas páginas pares e nos números das páginas ímpares. Você pode excluir todos os cabeçalhos e rodapés em um arquivo do Word simplesmente seguindo as etapas abaixo:

  1. Carregar arquivo DOCX/DOC de origem
  2. Localizar cabeçalho e rodapé na página de título, números de página pares e números de página ímpares
  3. Excluir a seção necessária quando encontrada
  4. Salvar arquivo DOCX de saída

O código abaixo segue estas etapas e mostra como excluir cabeçalho e rodapé em documentos do Word usando Java:

Document doc = new Document(dataDir + "HeaderFooter.doc");
for (Section section : doc.getSections()) {
	// Até três rodapés de cabeçalho diferentes são possíveis em uma seção (para páginas iniciais, pares e ímpares).
	// Verificamos e excluímos todos eles.
	HeaderFooter footer;
        HeaderFooter header;

	footer = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_FIRST);
       	header = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.HEADER_FIRST);
        
        
	if (footer != null)
		footer.remove();
        
        	if (header != null)
		header.remove();

	// O rodapé do cabeçalho principal é usado para páginas ímpares.
	footer = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_PRIMARY);
	if (footer != null)
		footer.remove();
        
        header = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.HEADER_PRIMARY);
	if (header != null)
		header.remove();

	footer = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_EVEN);
	if (footer != null)
		footer.remove();
        
       	header = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.HEADER_EVEN);
	if (header != null)
		header.remove();
}

doc.save(dataDir + "RemoveHeaderFooter_Out.docx");

Remover rodapé do documento do Word (DOCX/DOC) usando Java

Já discutimos como remover ou excluir cabeçalho e rodapé de arquivos do Word. No entanto, convém remover apenas os rodapés de um documento do Word, deixando o cabeçalho intacto. Esses requisitos são facilmente possíveis com as seguintes etapas:

  1. Carregar arquivo de palavras de origem (DOCX/DOC)
  2. Iterar através de cada seção do documento do Word
  3. Inicialize o objeto HeaderFooter
  4. Excluir rodapé do arquivo de entrada
  5. Salvar arquivo DOCX/DOC atualizado

O snippet de código a seguir explica como remover o rodapé do documento do Word usando Java:

Document doc = new Document(dataDir + "HeaderFooter.doc");
for (Section section : doc.getSections()) {
	// Até três rodapés diferentes são possíveis em uma seção (para primeiras páginas, pares e ímpares).
	// Verificamos e excluímos todos eles.
	HeaderFooter footer;

	footer = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_FIRST);
	if (footer != null)
		footer.remove();

	// Rodapé primário é o rodapé usado para páginas ímpares.
	footer = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_PRIMARY);
	if (footer != null)
		footer.remove();

	footer = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_EVEN);
	if (footer != null)
		footer.remove();
}
doc.save(dataDir + "RemoveFooters.docx");

Remover cabeçalho do documento do Word (DOCX/DOC) usando Java

Desde que aprendemos a remover ou excluir apenas o rodapé dos arquivos do MS Word. Vamos explorar essa outra etapa em que talvez seja necessário remover apenas os cabeçalhos dos documentos do Word. Os rodapés permanecerão os mesmos e não serão afetados porque nosso foco aqui é excluir apenas os cabeçalhos. As etapas a seguir fornecem um esboço do procedimento a ser adotado para esse fim:

  1. Carregar arquivo Word de entrada (DOCX/DOC)
  2. Inicialize uma instância da classe HeaderFooter
  3. Remover cabeçalhos de todas as seções do documento de entrada
  4. Salvar arquivo DOCX de atualização

O código abaixo mostra como excluir ou remover o cabeçalho de documentos do Word usando Java:

Document doc = new Document(dataDir + "HeaderFooter.doc");
for (Section section : doc.getSections()) {
	// Até três rodapés diferentes são possíveis em uma seção (para primeiras páginas, pares e ímpares).
	// Verificamos e excluímos todos eles.
	HeaderFooter header;

	header = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.HEADER_FIRST);
	if (header != null)
		header.remove();

	// Rodapé primário é o rodapé usado para páginas ímpares.
	header = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.HEADER_PRIMARY);
	if (header != null)
		header.remove();

	header = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.HEADER_EVEN);
	if (header != null)
		header.remove();
}
doc.save(dataDir + "RemoveHeader.docx");

Conclusão

Adicionar, inserir, remover ou excluir cabeçalho e rodapé em documentos do Word é um caso de uso muito importante e frequente de processamento de texto. Quase todos os documentos contêm cabeçalhos e rodapés, que podem ser manipulados com o Aspose.Words for Java API conforme suas necessidades. Este artigo é uma visão geral dos recursos relacionados, onde você pode discutir qualquer caso de uso personalizado e requisitos conosco por meio de Fóruns de suporte gratuito. Sinta-se à vontade para entrar em contato conosco para quaisquer dúvidas e preocupações.

Veja também