在 Java 中提取 PDF 链接
Contents
[
Hide
]
您可以通过遍历页面批注并进行过滤来检查 PDF 链接 AnnotationType.Link。
提取链接批注
当您需要获取页面上链接批注的位置和页码信息时,请使用此示例。
- 打开源 PDF Document。
- 遍历页面批注并筛选出链接批注。
- 读取每个匹配链接的页面索引和矩形区域。
public static void extractLinkAnnotation(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Link && annotation instanceof LinkAnnotation) {
LinkAnnotation linkAnnotation = (LinkAnnotation) annotation;
System.out.println("Page: " + linkAnnotation.getPageIndex()
+ ", location: " + linkAnnotation.getRect());
}
}
}
}
提取超链接目标
当您需要从网页链接批注中读取目标 URI 时,请使用此示例。
- 打开源 PDF Document。
- 查找操作类型为 GoToURIAction 的 LinkAnnotation 对象。
- 打印每个超链接的页索引和 URI 目标。
public static void extractHyperlinks(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Link && annotation instanceof LinkAnnotation) {
LinkAnnotation linkAnnotation = (LinkAnnotation) annotation;
if (linkAnnotation.getAction() instanceof GoToURIAction) {
GoToURIAction action = (GoToURIAction) linkAnnotation.getAction();
System.out.println("Page " + linkAnnotation.getPageIndex() + ", URI:" + action.getURI());
}
}
}
}
}