PDF ドキュメントのインタラクティブ性と利便性を向上させる強力な機能の一つに、ドキュメント内でのアクションがあります。ドキュメント内にページ移動、ナビゲーション制御、あるいはメディア再生などのアクションを埋め込むことで、ユーザーは静的なドキュメントを動的なツールに変換でき、ワークフローの効率化、ユーザーのエンゲージメント向上、ルーチンタスクの自動化を実現できます。これにより、PDF の利用はこれまで以上に効率的かつ多用途になります。本記事では、Spire.PDF for Python を使って Python コードで PDF ドキュメントにアクションを作成する方法 を紹介します。 Python で PDF にナビゲーションアクションを作成する Python で PDF にサウンドアクションを作成する Python で PDF にファイルオープンアクションを作成する Spire.PDF for Pythonのインストール この機能を使用するには、Spire.PDF for Pythonとplum-dispatch v1.7.4が必要です。Windows環境では、以下のpipコマンドで簡単にインストールできます。 pip install Spire.PDF または、Spire.PDF for Pythonのダウンロードページから直接ダウンロードして、プロジェクトに追加することもできます。 Python で PDF にナビゲーションアクションを作成する ナビゲーションボタンは、ユーザーがドキュメント内の指定ページの特定の位置にジャンプできるアクションです。開発者は PdfDestination オブジェクトを作成し、それを使って PdfGoToAction を作成し、さらにこのアクションに基づいて注釈を作成し、ページに追加することでナビゲーションボタンを完成させます。詳細な手順は以下の通りです: PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドで PDF ドキュメントを読み込みます。 PdfDestination オブジェクトを作成し、そのプロパティを設定します。 目的地に基づいて PdfGoToAction オブジェクトを作成します。 PdfPageBase.Canvas.DrawRectangle() メソッドを使ってページ上に矩形を描画します。 アクションに基づいて PdfActionAnnotation オブジェクトを作成し、PdfPageBase.Annotations.Add() メソッドでページに追加します。 PdfDocument.SaveToFile() メソッドでドキュメントを保存します。 from spire.pdf import * # PdfDocument クラスのインスタンスを作成し PDF ドキュメントを読み込む pdf = PdfDocument() pdf.LoadFromFile("Sample.pdf") # PdfDestination インスタンスを作成しプロパティを設定 destination = PdfDestination(pdf.Pages[0]) destination.Location = PointF(0.0, 0.0) destination.Mode = PdfDestinationMode.Location destination.Zoom = 0.8 # 矩形を作成 rect = RectangleF.FromLTRB(70, pdf.PageSettings.Size.Height - 120, 140, pdf.PageSettings.Size.Height - 100) # PdfGoToAction インスタンスを作成 action = PdfGoToAction(destination) # 2 ページ目に矩形を描画 pdf.Pages.get_Item(1).Canvas.DrawRectangle(PdfBrushes.get_LightGray(), rect) # ボタンのテキストを描画 font = PdfTrueTypeFont("Yu Gothic UI", 12.0, PdfFontStyle.Regular, True) stringFormat = PdfStringFormat(PdfTextAlignment.Center) pdf.Pages.get_Item(1).Canvas.DrawString("ページ1に移動", font, PdfBrushes.get_Green(), rect, stringFormat) # PdfActionAnnotation インスタンスを作成 annotation = PdfActionAnnotation(rect, action) # 注釈を 2 ページ目に追加 pdf.Pages.get_Item(1).Annotations.Add(annotation) # ドキュメントを保存 pdf.SaveToFile("output/AddPDFNavigationButton.pdf") pdf.Close() 結果ドキュメントのプレビューはこちらです。 関連記事:PythonでPDFにテキストを追加する方法 Python で PDF にサウンドアクションを作成する 開発者は PDF ドキュメント内に音声をアクションとして埋め込むことができ、ユーザーが特定の操作を行ったとき(ファイルを開いたときやボタンをクリックしたときなど)に音声を再生できます。サウンドアクションを作成する手順は以下の通りです: PdfDocument クラスのインスタンスを作成します。 PdfDocument.LoadFromFile() メソッドで PDF ドキュメントを読み込みます。 オーディオファイルを使って PdfSoundAction クラスのインスタンスを作成します。 PdfSound クラスのプロパティを通して音声パラメータを設定します。 PdfSoundAction クラスのプロパティを通して再生パラメータを設定します。 PdfDocument.Pages.get_Item() メソッドでページを取得します。 PdfPageBase.Canvas.Draw() メソッドでページに画像を描画します。 画像の位置に PdfActionAnnotation オブジェクトを作成してサウンドアクションを設定します。 注釈をページに追加します。 または、PdfDocument.AfterOpenAction プロパティを使って、ドキュメントを開いた後にサウンドアクションを実行させることもできます。この場合、PDF ページに注釈として追加する必要はありません。 PdfDocument.SaveToFile() メソッドでドキュメントを保存します。 from spire.pdf import * # PdfDocument インスタンスを作成し PDF ファイルを読み込む pdf = PdfDocument() pdf.LoadFromFile("Sample.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/AddMusicPDF.pdf") pdf.Close() 結果ドキュメントのプレビューはこちらです。 こちらもおすすめ:PythonでPDF内の画像を挿入、置換、または削除する方法 Python で PDF にファイルオープンアクションを作成する PdfLaunchAction クラスは PDF のファイルオープンアクションを表し、ユーザーが PDF ページ上のボタンをクリックすることで対応するファイルを開くことができます。開発者はファイルを開くための絶対パスまたは相対パス、および新しいウィンドウで開くかどうかを指定できます。PDF ドキュメントでファイルオープンアクションを作成する詳細手順は以下の通りです: PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドで PDF ドキュメントを読み込みます。 PdfDocument.Pages.get_Item() メソッドでドキュメントのページを取得します。 PdfPageBase.Canvas.DrawRectangle() メソッドを使ってページ上に矩形を描画します。 PdfLaunchAction クラスのオブジェクトを作成し、ファイルパスとパスタイプを指定します。 PdfLaunchAction.IsNewWindow プロパティで新しいウィンドウで開くモードを設定します。 アクションに基づいて PdfActionAnnotation オブジェクトを作成し、PdfActionAnnotation.Color プロパティで色を設定します。 PdfPageBase.Annotations.Add() メソッドでページに注釈を追加します。 PdfDocument.SaveToFile() メソッドでドキュメントを保存します。 from spire.pdf import * # PdfDocument クラスのインスタンスを作成 pdf = PdfDocument() # PDF ファイルを読み込む pdf.LoadFromFile("Sample.pdf") # ドキュメントの最初のページを取得 page = pdf.Pages.get_Item(0) # ページに矩形を描画 rect = RectangleF.FromLTRB(50, pdf.PageSettings.Size.Height - 100, 200, pdf.PageSettings.Size.Height - 80) page.Canvas.DrawRectangle(PdfPens.get_LightGray(), rect) # 矩形内にテキストを描画 page.Canvas.DrawString("Sample2 を開くにはクリック", PdfTrueTypeFont("Yu Gothic UI", 12.0, PdfFontStyle.Regular, True), PdfBrushes.get_Green(), rect, PdfStringFormat(PdfTextAlignment.Center)) # PdfLaunchAction オブジェクトを作成 action = PdfLaunchAction("Sample2.pdf", PdfFilePathType.Relative) action.IsNewWindow = True # アクションに基づいて PdfActionAnnotation オブジェクトを作成 annotation = PdfActionAnnotation(rect, action) annotation.Color = PdfRGBColor(Color.get_Blue()) # 注釈をページに追加 page.Annotations.Add(annotation) # ドキュメントを保存 pdf.SaveToFile("output/CreatePDFLaunchAction.pdf") pdf.Close() 結果ドキュメントのプレビューはこちらです。 一時ライセンスの申請 生成されたドキュメントから評価メッセージを削除したり、機能制限を解除したい場合は、30 日間の試用ライセンスを申請してください。