PDF 文档中的动作(Action)可以实现各种特殊的功能,例如文件打开、导航控制甚至是媒体播放。通过在 PDF 文档中嵌入各种动作,文档创作者可以将静态文档转变为动态工具,从而增强 PDF 文档的功能性,并简化用户在文档中的各种操作。本文将介绍如何使用 Spire.PDF for Python 库通过 Python 代码在 PDF 文档中创建动作。
安装 Spire.PDF for Python
本教程需要用到 Spire.PDF for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.PDF
如果您不确定如何安装,请参考:如何在 Windows 中安装 Spire.PDF for Python
用 Python 在 PDF 文档中创建导航动作
导航动作是一种允许用户跳转到 PDF 文档的指定页面的指定位置的动作。开发者可以通过创建一个 PdfDestination 对象,并基于该对象创建一个 PdfGoToAction 对象,来完成导航动作的创建。创建好导航动作后,开发者可以创建动作注释添加到文档的任何位置。以下是详细操作步骤:
- 创建 PdfDocument 对象,并使用 PdfDocument.LoadFromFile() 方法载入 PDF 文档。
- 使用 PdfDocument.Pages.get_Item() 方法获取文档第二页。
- 创建 PdfDestination 对象并设置其属性。
- 基于 PdfDestination 对象创建 PdfGoToAction 对象。
- 使用 PdfPageBase.Canvas.DrawRectangle() 方法在页面上绘制一个矩形。
- 使用 PdfPageBase.Canvas.DrawString() 方法在矩形位置导航文本。
- 基于 PdfGoToAction 对象创建一个 PdfActionAnnotation 对象。
- 使用 PdfPageBase.Annotations.Add() 方法将动作注释添加到页面上。
- 使用 PdfDocument.SaveToFile() 方法保存文档。
- Python
from spire.pdf import *
# 创建PdfDocument类的一个实例并加载一个PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("示例.pdf")
# 获取第二页
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)
# 在第二页上绘制一个矩形
rect = RectangleF.FromLTRB(70, pdf.PageSettings.Size.Height - 120, 140, pdf.PageSettings.Size.Height - 100)
page.Canvas.DrawRectangle(PdfBrushes.get_LightGray(), rect)
# 绘制按钮的文字
font = PdfTrueTypeFont("HarmonyOS Sans SC", 14.0, PdfFontStyle.Regular, True)
stringFormat = PdfStringFormat(PdfTextAlignment.Center)
page.Canvas.DrawString("转到第一页", font, PdfBrushes.get_Green(), rect, stringFormat)
# 创建一个PdfActionAnnotation实例
annotation = PdfActionAnnotation(rect, action)
# 将注释添加到第二页
page.Annotations.Add(annotation)
# 保存文档
pdf.SaveToFile("output/PDF添加导航动作.pdf")
pdf.Close()
用 Python 在 PDF 文档中创建声音动作
开发者可以将音频作为动作嵌入到 PDF 文档中,在用户执行特定操作时(如文件打开时或点击按钮时)播放特定音频,从而实现文档背景音乐等特殊功能。以下是创建声音动作的操作步骤:
- 创建 PdfDocument 对象,并使用 PdfDocument.LoadFromFile() 方法载入 PDF 文档。
- 使用音频文件创建 PdfSoundAction 对象。
- 通过 PdfSound 类的属性设置音频参数。
- 通过 PdfSoundAction 类的属性设置播放参数。
- 使用 PdfDocument.Pages.get_Item() 方法获取一个页面。
- 使用 PdfPageBase.Canvas.Draw() 方法在页面上绘制按钮图像。
- 在图像位置创建带有声音动作的 PdfActionAnnotation 对象。
- 也可以通过 PdfDocument.AfterOpenAction 属性直接设置声音操作为文件打开后的操作,而不将其添加到 PDF 页面中。
- 使用 PdfDocument.SaveToFile() 方法保存文档。
- Python
from spire.pdf import *
# 创建PdfDocument实例并加载PDF文件
pdf = PdfDocument()
pdf.LoadFromFile("示例.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 文档中创建文件打开动作
PdfLaunchAction 类代表了 PDF 中的文件打开动作,允许用户通过特定操作来打开对应的文件。开发者可以在创建文件打开动作时,指定文件的绝对路径或相对路径,以及是否在新窗口中打开等。创建文件打开动作的详细步骤如下:
- 创建 PdfDocument 对象,并使用 PdfDocument.LoadFromFile() 方法载入 PDF 文档。
- 使用 PdfDocument.Pages.get_Item() 方法获取文档页面。
- 使用 PdfPageBase.Canvas.DrawRectangle() 方法在页面上绘制一个矩形。
- 创建 PdfLaunchAction 对象,并指定文件路径及路径类型。
- 通过 PdfLaunchAction.IsNewWindow 属性设置为在新窗口中打开文件。
- 基于文件打开动作创建 PdfActionAnnotation 对象,并通过 PdfActionAnnotation.Color 属性设置其颜色。
- 使用 PdfPageBase.Annotations.Add() 方法将其添加到页面中。
- 使用 PdfDocument.SaveToFile() 方法保存文档。
- Python
from spire.pdf import *
# 创建PdfDocument类的一个实例
pdf = PdfDocument()
# 加载一个PDF文件
pdf.LoadFromFile("示例.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)
# 在矩形内绘制文本
font = PdfTrueTypeFont("HarmonyOS Sans SC", 14.0, PdfFontStyle.Regular, True)
page.Canvas.DrawString("点击打开示例2", font, PdfBrushes.get_Green(), rect, PdfStringFormat(PdfTextAlignment.Center))
# 创建一个PdfLaunchAction对象
action = PdfLaunchAction("示例2.pdf", PdfFilePathType.Relative)
action.IsNewWindow = True
# 根据该动作创建一个PdfActionAnnotation对象
annotation = PdfActionAnnotation(rect, action)
annotation.Color = PdfRGBColor(Color.get_Blue())
# 将注释添加到页面
page.Annotations.Add(annotation)
# 保存文档
pdf.SaveToFile("output/PDF创建文件打开动作.pdf")
pdf.Close()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。