在 Java 中获取、更新和展开 PDF 书签
Contents
[
Hide
]
Aspose.PDF for Java 通过文档大纲模型以及 PdfBookmarkEditor 立面。
获取书签属性
当您需要检查文档大纲中的顶级书签条目时,请使用此示例。
- 打开源 PDF Document。
- 遍历大纲集合。
- 读取并打印书签的标题、样式和颜色值。
public static void getBookmarks(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (int i = 1; i <= document.getOutlines().size(); i++) {
OutlineItemCollection outlineItem = document.getOutlines().get_Item(i);
System.out.println(outlineItem.getTitle());
System.out.println(outlineItem.getItalic());
System.out.println(outlineItem.getBold());
System.out.println(outlineItem.getColor());
}
}
}
获取书签页码
此示例使用 PdfBookmarkEditor 提取书签标题、层级、页码和动作。
- 将源 PDF 绑定到 PdfBookmarkEditor。
- 提取书签集合并遍历它。
- 打印每个书签的级别、标题、页码和操作信息。
public static void getBookmarkPageNumber(Path inputFile) {
PdfBookmarkEditor bookmarkEditor = new PdfBookmarkEditor();
try {
bookmarkEditor.bindPdf(inputFile.toString());
for (Bookmark bookmark : bookmarkEditor.extractBookmarks()) {
String levelSeparator = "";
for (int i = 0; i < bookmark.getLevel(); i++) {
levelSeparator += "----";
}
System.out.println(levelSeparator + " Title: " + bookmark.getTitle());
System.out.println(levelSeparator + " Page Number: " + bookmark.getPageNumber());
System.out.println(levelSeparator + " Page Action: " + bookmark.getAction());
}
} finally {
bookmarkEditor.close();
}
}
获取子书签
当您需要检查顶层和嵌套的大纲项时,请使用此示例。
- 打开源 PDF Document。
- 遍历顶层大纲并打印其属性。
- 检测子书签,然后遍历它们并打印其属性。
public static void getChildBookmarks(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (int i = 1; i <= document.getOutlines().size(); i++) {
OutlineItemCollection outlineItem = document.getOutlines().get_Item(i);
System.out.println(outlineItem.getTitle());
System.out.println(outlineItem.getItalic());
System.out.println(outlineItem.getBold());
System.out.println(outlineItem.getColor());
int count = outlineItem.size();
if (count > 0) {
System.out.println("Child Bookmarks");
for (int j = 1; j <= outlineItem.size(); j++) {
OutlineItemCollection childOutlineItem = outlineItem.get_Item(j);
System.out.println(childOutlineItem.getTitle());
System.out.println(childOutlineItem.getItalic());
System.out.println(childOutlineItem.getBold());
System.out.println(childOutlineItem.getColor());
}
}
}
}
}
更新书签
当需要修改现有书签标题和样式时,请使用此示例。
- 打开源 PDF Document。
- 访问目标大纲项及其子书签。
- 更新书签属性并保存文档。
public static void updateBookmarks(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
OutlineItemCollection outline = document.getOutlines().get_Item(1);
OutlineItemCollection childOutline = outline.get_Item(1);
childOutline.setTitle("Updated Outline");
childOutline.setItalic(true);
childOutline.setBold(true);
document.save(outputFile.toString());
}
}
默认展开书签
当文档显示时,书签面板应打开并显示展开的目录项时,请使用此示例。
- 打开源 PDF Document。
- 将页面模式设置为使用大纲,并将每个大纲项标记为打开状态。
- 保存已更新的文档。
public static void expandedBookmarks(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
document.setPageMode(PageMode.UseOutlines);
for (int i = 1; i <= document.getOutlines().size(); i++) {
OutlineItemCollection item = document.getOutlines().get_Item(i);
item.setOpen(true);
}
document.save(outputFile.toString());
}
}