Java での PDF リンクの抽出

ページ注釈を反復処理し、AnnotationType.Link でフィルタリングすることで、PDF リンクを検査できます。

リンク注釈の抽出

ページ上のリンク注釈の位置とページ情報を取得する必要がある場合は、この例を使用してください。

  1. ソース PDF の Document を開いてください。
  2. ページ注釈を反復処理し、リンク注釈をフィルタリングしてください。
  3. 一致する各リンクのページインデックスと矩形を読み取ってください。
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());
            }
        }
    }
}

ハイパーリンクの宛先の抽出

Web リンク注釈から対象の URI を読み取る必要がある場合は、この例を使用してください。

  1. ソース PDF の Document を開いてください。
  2. アクションが GoToURIAction オブジェクトである LinkAnnotation を検索してください。
  3. 各ハイパーリンクについて、ページインデックスと 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());
                }
            }
        }
    }
}