pkgsrc/print/py-pdfを使って、PDFファイル中のハイパーリンクを抽出する

とある自治体が法令に基づいて公開しているPDFファイル一式を入手したかったのだが、そのPDFファイルへのリンク先が1つのPDFファイル中のハイパーリンクという形でしか提供されていなかった。 と言うことで、pkgsrc/textproc/py-pdfからpy314-pdf-6.7.0をインストールして抽出することにした。

と言うことで、以下のようなスクリプトを書いてみた。

$ cat extract-hyperlinks.py
#!/usr/pkg/bin/python3.14
#
# Usage:
# $ cd /usr/pkgsrc/textproc/py-pdf
# $ make install
# $ ./extract-hyperlinks.py target.pdf > links.txt
# $ wget -i links.txt

import sys
from pypdf import PdfReader

pdfpath = sys.argv[1]

reader = PdfReader(pdfpath)

for page in reader.pages:
  if '/Annots' in page:
    for annot in page['/Annots']:
      annotation = annot.get_object()
      if "/A" in annotation and "/URI" in annotation["/A"]:
        uri = annotation["/A"]["/URI"]

        print(f"{uri}")

以下のように利用すれば良い。

$ python3.14 extract-hyperlinks.py ../hyperlinks.pdf > links.txt

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

pkgsrc/print/py-pdfを使って、PDFファイル中のハイパーリンクを抽出する

とある自治体が法令に基づいて公開しているPDFファイル一式を入手したかったのだが、そのPDFファイルへのリンク先が1つのPDFファイル中のハイパーリンクという形でしか提供されていなかった。 と言うことで、pkgsrc/textproc/py-pdfからpy314-pdf...