使用 Java 管理 PDF 页眉和页脚
Contents
[
Hide
]
页眉和页脚伪元素是非内容的分页元素,通常用于重复的标签、页码标识和布局框架。
创建页眉伪元素
当您需要具有一致文本样式和对齐方式的可复用页眉伪元素时,请使用此助手。
- 创建一个 HeaderArtifact。
- 设置其文本、字体设置和前景颜色。
- 配置水平对齐并返回该工件。
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;
}
创建页脚工件
此助手创建一个可重复使用的页脚工件,其样式模式与页眉工件相同。
- 创建一个 FooterArtifact。
- 设置其文本、文本状态和前景色。
- 配置对齐方式并返回制品。
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;
}
添加页眉工件
当页面应显示可重复使用的页眉工件时,请使用此示例。
- 打开源 PDF Document。
- 通过辅助方法创建页眉工件。
- 将工件添加到页面并保存输出文件。
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());
}
}
添加页脚工件
当页面需要显示具有可重用格式的页脚工件时,请使用此示例。
- 打开源 PDF Document。
- 通过帮助方法创建页脚工件。
- 将工件添加到页面并保存输出文件。
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());
}
}
删除页眉和页脚工件
当需要从页面删除现有的页眉和页脚工件时,请使用此方法。
- 打开源 PDF Document。
- 逆序遍历页面工件集合。
- 删除子类型为 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());
}
}