使用 Java 管理 PDF 页眉和页脚

页眉和页脚伪元素是非内容的分页元素,通常用于重复的标签、页码标识和布局框架。

创建页眉伪元素

当您需要具有一致文本样式和对齐方式的可复用页眉伪元素时,请使用此助手。

  1. 创建一个 HeaderArtifact。
  2. 设置其文本、字体设置和前景颜色。
  3. 配置水平对齐并返回该工件。
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;
}

创建页脚工件

此助手创建一个可重复使用的页脚工件,其样式模式与页眉工件相同。

  1. 创建一个 FooterArtifact。
  2. 设置其文本、文本状态和前景色。
  3. 配置对齐方式并返回制品。
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;
}

添加页眉工件

当页面应显示可重复使用的页眉工件时,请使用此示例。

  1. 打开源 PDF Document。
  2. 通过辅助方法创建页眉工件。
  3. 将工件添加到页面并保存输出文件。
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());
    }
}

添加页脚工件

当页面需要显示具有可重用格式的页脚工件时,请使用此示例。

  1. 打开源 PDF Document。
  2. 通过帮助方法创建页脚工件。
  3. 将工件添加到页面并保存输出文件。
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());
    }
}

删除页眉和页脚工件

当需要从页面删除现有的页眉和页脚工件时,请使用此方法。

  1. 打开源 PDF Document。
  2. 逆序遍历页面工件集合。
  3. 删除子类型为 header 或 footer 的分页伪影,然后保存文档。
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());
    }
}