PDFファイルは、今や文書の保存や配布に最適なフォーマットです。しかし、PDFファイルは静的な性質を持っているため、インタラクティブ性が制限されることがあります。ハイパーリンクは、PDFファイルのインタラクティブ性とユーザーエクスペリエンスを向上させるための重要な要素です。
強力なプログラミング言語であるPythonには、ハイパーリンクの追加や削除など、PDFファイルを扱うための様々なライブラリやツールがあります。この記事では、これらの操作を実行するためにサードパーティ製ライブラリSpire.PDF for Pythonを使用する方法について詳しく説明します。
Pythonライブラリをインストールする
PDFファイルを処理するには、Spire.PDF for Pythonライブラリが必要です。以下のpipコマンドで直接インストールできます:
pip install Spire.Pdf
PythonでPDFにハイパーリンクを追加する
Spire.PDF for Pythonは、PDFに様々なタイプのハイパーリンクを追加することをサポートしています:
- 単純なテキストリンク:
PdfPageBase.Canvas.DrawString()
メソッドを使ってPDFページに直接描画できます。 - ハイパーテキストリンク、電子メールリンク:
PdfTextWebLink.DrawTextWebLink()
メソッドでPDFページに描画できます。 - ドキュメントリンク:
PdfPageBase.AnnotationsWidget.Add(PdfFileLinkAnnotation)
メソッドで追加できます。
Pythonコード:
from spire.pdf.common import *
from spire.pdf import *
# PDF文書を作成し、ページを追加する
pdf = PdfDocument()
page = pdf.Pages.Add()
# 開始X座標とY座標を指定する
y = 30.0
x = 10.0
# True Typeフォントの作成
font = PdfTrueTypeFont("Yu Mincho", 12.0, PdfFontStyle.Regular, True)
font1 = PdfTrueTypeFont("Yu Mincho", 12.0, PdfFontStyle.Underline, True)
# シンプルなテキストリンクを追加する
label = "簡単なテキストリンク:"
format = PdfStringFormat()
format.MeasureTrailingSpaces = True
page.Canvas.DrawString(label, font, PdfBrushes.get_Black(), 0.0, y, format)
x = font.MeasureString(label, format).Width
url = "https://qiita.com/"
page.Canvas.DrawString(url, font1, PdfBrushes.get_Blue(), x, y)
y = y + 28
# ハイパーテキストリンクの追加
label = "ハイパーテキストリンク:"
page.Canvas.DrawString(label, font, PdfBrushes.get_Black(), 0.0, y, format)
x = font.MeasureString(label, format).Width
webLink = PdfTextWebLink()
webLink.Text = "ホームページ"
webLink.Url = url
webLink.Font = font1
webLink.Brush = PdfBrushes.get_Blue()
webLink.DrawTextWebLink(page.Canvas, PointF(x, y))
y = y + 28
# Eメールリンクの追加
label = "Eメールリンク: "
page.Canvas.DrawString(label, font, PdfBrushes.get_Black(), 0.0, y, format)
x = font.MeasureString(label, format).Width
link = PdfTextWebLink()
link.Text = "お問い合わせ"
link.Url = "mailto:support@e-iceblue.com"
link.Font = font1
link.Brush = PdfBrushes.get_Blue()
link.DrawTextWebLink(page.Canvas, PointF(x, y))
y = y + 28
# 文書リンクを追加する
label = "文書リンク: "
page.Canvas.DrawString(label, font, PdfBrushes.get_Black(), 0.0, y, format)
x = font.MeasureString(label, format).Width
text = "クリックしてファイルを開く"
location = PointF(x, y)
size = font1.MeasureString(text)
linkBounds = RectangleF(location, size)
fileLink = PdfFileLinkAnnotation(linkBounds, "C:\\Users\\Administrator\\Desktop\\report.xlsx")
fileLink.Border = PdfAnnotationBorder(0.0)
page.AnnotationsWidget.Add(fileLink)
page.Canvas.DrawString(text, font1, PdfBrushes.get_Blue(), x, y)
# PDFファイルを保存する
pdf.SaveToFile("PDFLinks.pdf")
pdf.Close()
PythonでPDFからハイパーリンクを削除する
PDF文書に存在するすべてのハイパーリンクを一度に削除したい場合は、次の手順を参照してください:
-
LoadFromFile()
メソッドでPDF文書を読み込みます。 - ドキュメント内のページをループし、
PdfPageBase.AnnotationsWidget
プロパティを通して各ページの注釈を取得します。 - すべての注釈をループし、各注釈がハイパーリンクであるかどうかをチェックします。
- そうであれば、
PdfAnnotationCollection.Remove()
メソッドを使用して削除します。 -
PdfDocument.SaveToFile()
メソッドを使用してドキュメントを保存します。
Pythonコード:
from spire.pdf import *
from spire.pdf.common import *
# PDF文書を読み込む
pdf = PdfDocument()
pdf.LoadFromFile("PDFLinks.pdf")
# 文書内のすべてのページを反復処理する
for j in range(pdf.Pages.Count):
# 各ページを取得する
page = pdf.Pages.get_Item(j)
# 各ページの注釈を取得する
annotations = page.AnnotationsWidget
# すべての注釈を反復処理する
if annotations.Count > 0:
i = annotations.Count - 1
while i >=0:
# 注釈を取得する
annotation = annotations.get_Item(i)
# 各注釈がハイパーリンクかどうかをチェックする
if isinstance(annotation, PdfTextWebLinkAnnotationWidget):
# ハイパーリンク注釈の削除
annotations.Remove(annotation)
i -= 1
# PDF文書を保存する
pdf.SaveToFile("RemovePDFLinks.pdf")
pdf.Close()
PDFページ内の指定されたハイパーリンクを削除するだけなら、以下のコードを参照できます:
# 最初のページの最初のハイパーリンクを削除する
page = pdf.Pages.get_Item(0)
page.AnnotationsWidget.RemoveAt(0)
生成されたドキュメントの赤いウォーターマークは、以下のリンクをクリックして、1ヶ月の無料ライセンスをリクエストすることで削除できます: