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 天的临时许可证。