とある自治体が法令に基づいて公開している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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。