リンクは二種類あり、多くのツールは片方しか見ていない
PDF のハイパーリンクはリンク注釈です。ページ上の矩形にアクションが結び付いたものです。「リンクを抽出する」ツールはすべてこれを読みます。ところが文書には、本文に打ち込まれたまま注釈にならなかった URL やメールアドレスもあります。https://example.org/docs を挙げた脚注、署名欄の連絡先などです。読み手にとってはリンクですが、/Annots だけを読むプログラムには存在しません。このツールは両方を報告し、どちらなのかを明示します。
何を報告するか
- 外部リンク —
httpとhttpsのターゲット。 - 内部リンク — 文書内のジャンプ。明示的なデスティネーション配列でも、名前ツリー内の名前付きデスティネーションでも、実際のページ番号まで解決します。
- mailto と tel — スキームを外して表示するので、アドレスや番号がそのまま読めます。
- ファイルリンク — 文書の外にあるものを開くターゲット。
- JavaScript アクション — クリックでコードを実行する
javascript:URI。 - リンクになっていない URL とメールアドレス — 本文から見つけ、別種として印を付けます。すでにリンク注釈の内側にあるものは除外します。
各項目にはページ、アンカー文字(リンク注釈自体は文字を持たないため、注釈矩形の内側にあるページ本文の語から復元します)、ターゲットが付きます。
危険度の印
javascript— クリックするとビューアー内でコードが走ります。mismatch— 表示されている文字がある host を指す URL なのに、実際のリンク先は別の host。これは典型的なフィッシングの形で、PDF ビューアーは文字しか見せません。クリック前に見ておく価値があります。no-target— URL も解決可能なデスティネーションも持たないリンク注釈。どのビューアーでも死んでいます。relative— スキームのないターゲット。ファイルを開いた場所を基準に解決されます。
一切取得しません
文書内のどの URL も要求されることはありません。これは重要です。疑わしい PDF を、相手のサーバーに触れず、開いたことを知らせずに調べられます。ファイルの解析はすべてブラウザー内で行われ、アップロードもありません。
書き出し
CSV(1 リンク 1 行、ページ・種類・アンカー文字・ターゲット・解決済みの遷移先ページ・印)、または同じ内容に外接矩形を加えた JSON。
Tiny Online Tools







