Administrar encabezados y pies de página PDF usando Java

Los artefactos de encabezado y pie de página son elementos de paginación sin contenido que se utilizan comúnmente para etiquetas repetidas, identificadores de página y enmarcado del diseño.

Crear un artefacto de encabezado

Utilice este asistente cuando necesite un artefacto de encabezado reutilizable con estilo de texto y alineación coherentes.

  1. Cree un HeaderArtifact.
  2. Establezca su texto, la configuración de la Font y el color de primer plano.
  3. Configure la alineación horizontal y devuelva el artifact.
public static HeaderArtifact createHeaderArtifact(String text) {
    HeaderArtifact artifact = new HeaderArtifact();
    artifact.setText(text);
    artifact.getTextState().setFontSize(14);
    artifact.getTextState().setFont(FontRepository.findFont("Arial"));
    artifact.getTextState().setForegroundColor(Color.getNavy());
    artifact.setArtifactHorizontalAlignment(HorizontalAlignment.Center);
    return artifact;
}

Crear un artefacto de pie de página

Este asistente crea un artefacto de pie de página reutilizable con el mismo patrón de estilo que el artefacto de encabezado.

  1. Cree un FooterArtifact.
  2. Establezca su texto, estado del texto y color de primer plano.
  3. Configure la alineación y devuelva el artefacto.
public static FooterArtifact createFooterArtifact(String text) {
    FooterArtifact artifact = new FooterArtifact();
    artifact.setText(text);
    artifact.getTextState().setFontSize(14);
    artifact.getTextState().setFont(FontRepository.findFont("Arial"));
    artifact.getTextState().setForegroundColor(Color.getNavy());
    artifact.setArtifactHorizontalAlignment(HorizontalAlignment.Center);
    return artifact;
}

Agregar un artefacto de encabezado

Utilice este ejemplo cuando una página deba mostrar un artefacto de encabezado reutilizable.

  1. Abra el PDF de origen Document.
  2. Cree el artefacto de encabezado mediante el método auxiliar.
  3. Agregue el artefacto a la página y guarde el archivo de salida.
public static void addHeaderArtifact(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        HeaderArtifact header = createHeaderArtifact("Sample Header");
        document.getPages().get_Item(1).getArtifacts().add(header);
        document.save(outputFile.toString());
    }
}

Agregar un artefacto de pie de página

Utilice este ejemplo cuando la página debe mostrar un artefacto de pie de página con formato reutilizable.

  1. Abra el PDF de origen Document.
  2. Cree el artefacto de pie de página mediante el método auxiliar.
  3. Agregue el artefacto a la página y guarde el archivo de salida.
public static void addFooterArtifact(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        FooterArtifact footer = createFooterArtifact("Sample Footer");
        document.getPages().get_Item(1).getArtifacts().add(footer);
        document.save(outputFile.toString());
    }
}

Eliminar artefactos de encabezado y pie de página

Utilice este enfoque cuando los artefactos existentes de encabezado y pie de página deban eliminarse de la página.

  1. Abra el PDF de origen Document.
  2. Itere a través de la colección de artefactos de la página en orden inverso.
  3. Elimine los artefactos de paginación cuyo subtipo sea encabezado o pie de página, luego guarde el documento.
public static void deleteHeaderFooterArtifact(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        for (int i = document.getPages().get_Item(1).getArtifacts().size(); i >= 1; i--) {
            Artifact artifact = document.getPages().get_Item(1).getArtifacts().get_Item(i);
            if (artifact.getType() == Artifact.ArtifactType.Pagination
                    && (artifact.getSubtype() == Artifact.ArtifactSubtype.Header
                    || artifact.getSubtype() == Artifact.ArtifactSubtype.Footer)) {
                document.getPages().get_Item(1).getArtifacts().delete(artifact);
            }
        }

        document.save(outputFile.toString());
    }
}