PDF形式は、そのクロスプラットフォーム互換性と豊富な機能セットにより、多くの業界で選ばれるファイル形式となっています。その中でも、PDFのアクション(Action)機能は特に注目されます。アクションを使用することで、リンクやボタン、スクリプトなどのインタラクティブな要素を埋め込むことができ、ドキュメントの対話性や機能性が大幅に向上します。Pythonのような強力なプログラミング言語を用いてこれらのアクションを作成することで、ドキュメント処理の自動化や、複雑な操作の実現が可能となり、PDFドキュメントの活用範囲が大きく広がります。静的なコンテンツ表示に留まらず、ユーザーのニーズやビジネスプロセスにより適したサービスを提供できるようになるのです。本記事では、Pythonを使用してPDFドキュメントにアクションを作成する方法について説明します。
ここで紹介する方法は、Spire.PDF for Pythonを使用します。Pythonで以下のコマンドを実行してインストールできます:pip install Spire.PDF
。
Pythonを使用してPDFにナビゲーションアクションを作成する
ライブラリのPdfGoToAction
クラスは、指定されたページや位置にジャンプするナビゲーションアクションを表します。また、ジャンプ後のページズームをカスタマイズすることも可能です。以下は、このクラスを使用してPDFドキュメントにナビゲーションアクションを作成する手順です:
- 必要なモジュールをインポートします。
-
PdfDocument
クラスを作成し、PdfDocument.LoadFromFile()
メソッドを使用してPDFファイルを読み込みます。 -
PdfDocument.Pages.get_Item()
メソッドを使用してページを取得します。 -
PdfDestination
インスタンスを作成して、ジャンプ先の位置とズームを設定します。 -
PdfDestination
インスタンスを使用して、PdfGoToAction
インスタンスを作成します。 -
PdfGoToAction
インスタンスを使用して、指定された位置にPdfActionAnnotation
インスタンスを作成し、注釈の色を設定します。 -
PdfPageBase.Annotations.Add()
メソッドを使用して注釈をページに追加します。 -
PdfPageBase.Canvas.DrawString()
メソッドを使用して、注釈の位置にナビゲーションヒントのテキストを描画します。 -
PdfDocument.SaveToFile()
メソッドを使用してドキュメントを保存します。 - リソースを解放します。
コード例
from spire.pdf import *
# PdfDocumentクラスのインスタンスを作成し、PDF文書を読み込む
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")
# 2ページ目を取得
page = pdf.Pages.get_Item(1)
# PdfDestinationのインスタンスを作成し、そのプロパティを設定
destination = PdfDestination(pdf.Pages.get_Item(0))
destination.Location = PointF(0.0, 0.0)
destination.Mode = PdfDestinationMode.Location
destination.Zoom = 0.8
# PdfGoToActionのインスタンスを作成
action = PdfGoToAction(destination)
# PdfActionAnnotationのインスタンスを作成
rect = RectangleF.FromLTRB(70, pdf.PageSettings.Size.Height - 100, 220, pdf.PageSettings.Size.Height - 70)
annotation = PdfActionAnnotation(rect, action)
annotation.Color = PdfRGBColor(Color.get_Green())
# 注釈を2ページ目に追加
page.Annotations.Add(annotation)
# ボタンの文字を描画
font = PdfTrueTypeFont("Yu Mincho Demibold", 14.0, PdfFontStyle.Regular, True)
stringFormat = PdfStringFormat(PdfTextAlignment.Center)
page.Canvas.DrawString("最初のページへ移動", font, PdfBrushes.get_Green(), rect, stringFormat)
# 文書を保存
pdf.SaveToFile("output/PDFにナビゲーションボタンを追加.pdf")
pdf.Close()
Pythonを使用してPDFにサウンドアクションを作成する
PdfSoundAction
クラスは音声アクションを表し、PDFドキュメントに音声を埋め込み、ユーザーが特定の操作を行った際に音声を再生することができます(例えば、アクション注釈をクリックしたときやファイルを開いたとき)。以下は、PDFドキュメントにサウンドアクションを作成する手順です:
- 必要なモジュールをインポートします。
-
PdfDocument
クラスを作成し、PdfDocument.LoadFromFile()
メソッドを使用してPDFファイルを読み込みます。 - 指定された音声ファイルを使用して
PdfSoundAction
インスタンスを作成します。 -
PdfSoundAction
クラスのプロパティを使用して、音声再生パラメーターを設定します。 -
PdfSoundAction.Sound
プロパティを使用して音声パラメーターを設定します。 -
PdfDocument.Pages.get_Item()
メソッドを使用してページを取得します。 -
PdfPageBase.Canvas.DrawImage()
メソッドを使用して、ページの指定された位置に音声再生アイコンを描画します。 -
PdfSoundAction
インスタンスを使用してPdfActionAnnotation
インスタンスを作成し、PdfPageBase.Annotations.Add()
メソッドを使用して音声再生アイコンの位置に追加します。 -
PdfDocument.AfterOpenAction
プロパティを直接使用して、ドキュメントを開くと同時に音声アクションを実行するように設定することもできます。 -
PdfDocument.SaveToFile()
メソッドを使用してドキュメントを保存します。 - リソースを解放します。
コード例
from spire.pdf import *
# PdfDocumentのインスタンスを作成し、PDFファイルを読み込む
pdf = PdfDocument()
pdf.LoadFromFile("Sample1.pdf")
# ドキュメントの最初のページを取得
page = pdf.Pages.get_Item(0)
# 音声ファイルのパスを使用してPdfSoundActionのインスタンスを作成
soundAction = PdfSoundAction("Wave.wav")
# 音声パラメータを設定
soundAction.Sound.Bits = 16
soundAction.Sound.Channels = PdfSoundChannels.Stereo
soundAction.Sound.Encoding = PdfSoundEncoding.Signed
soundAction.Sound.Rate = 44100
# 再生パラメータを設定
soundAction.Volume = 0.5
soundAction.Repeat = True
soundAction.Mix = True
soundAction.Synchronous = False
# ページ上に画像を描画
image = PdfImage.FromFile("Sound.png")
page.Canvas.DrawImage(image, PointF(30.0, 30.0))
# 音声アクションを使用してPdfActionAnnotationのインスタンスを作成
rect = RectangleF.FromLTRB(30.0, 30.0, image.GetBounds().Width + 30.0, image.GetBounds().Height + 30.0)
annotation = PdfActionAnnotation(rect, soundAction)
# 注釈をページに追加
page.Annotations.Add(annotation)
# ドキュメントが開いた後に音声アクションを再生する設定
# pdf.AfterOpenAction = soundAction
# 文書を保存
pdf.SaveToFile("output/PDFに音声アクションを追加.pdf")
pdf.Close()
Pythonを使用してPDFにJavaScriptアクションを作成する
PdfJavaScriptAction
クラスは、特定の状況でPDFドキュメント内でJavaScriptコードを実行するJavaScriptアクションを表します。例えば、フォームの入力やリセットなどが挙げられます。以下は、PDFにJavaScriptアクションを作成する手順の例です:
- 必要なモジュールをインポートします。
-
PdfDocument
クラスを作成し、PdfDocument.LoadFromFile()
メソッドを使用してPDFファイルを読み込みます。 -
PdfDocument.Pages.get_Item()
メソッドを使用してページを取得します。 - JavaScriptコードをカスタマイズします。
- このコードを使用して
PdfJavaScriptAction
インスタンスを作成します。 -
PdfJavaScriptAction
インスタンスを使用して、ページの指定された位置にPdfActionAnnotation
インスタンスを作成し、その色を設定します。 -
PdfPageBase.Annotations.Add()
メソッドを使用して注釈をページに追加します。 -
PdfDocument.SaveToFile()
メソッドを使用してドキュメントを保存します。 - リソースを解放します。
コード例
from spire.pdf import *
# PdfDocumentのインスタンスを作成
pdf = PdfDocument()
# PDFファイルを読み込む
pdf.LoadFromFile("Sample2.pdf")
# 最初のページを取得
page = pdf.Pages.get_Item(0)
# JavaScriptコードを指定
js = """
var lastName = this.getField("LastName").value;
var firstName = this.getField("FirstName").value;
this.getField("FullName").value = lastName + " " + firstName;
"""
# JavaScriptアクションを作成
jsAction = PdfJavaScriptAction(js)
# JavaScriptアクション付きの注釈を作成
rect = RectangleF.FromLTRB(380, 160, 530, 180)
annotation = PdfActionAnnotation(rect, jsAction)
annotation.Color = PdfRGBColor(Color.get_Red())
# ページに注釈を追加
page.Annotations.Add(annotation)
# アクションのヒントテキストを描画
font = PdfTrueTypeFont("Yu Gothic", 12.0, PdfFontStyle.Regular, True)
stringFormat = PdfStringFormat(PdfTextAlignment.Center)
text = "クリックして氏名を入力"
page.Canvas.DrawString(text, font, PdfBrushes.get_Red(), rect, stringFormat)
# 文書を保存
pdf.SaveToFile("output/JavaScriptアクションをPDFに追加.pdf")
pdf.Close()
本記事では、Pythonを使用してPDFドキュメントにナビゲーションアクション、サウンドアクション、およびJavaScriptアクションを作成する方法を紹介しました。
さらに詳しいPDFドキュメント操作のコツは、Spire.PDF for Pythonのチュートリアルをご覧ください。