在 pdf 文件中添加附件的作用是为了增强文件的交互性和功能性。通过添加附件,我们可以将其他文件(如文档、图像、音频或视频)与pdf文件关联起来,并允许用户轻松地访问这些附件。
spire.pdf for python 允许您以两种方式附加文件:
- 文档附件:pdf 的文档附件不会显示在页面上,只能在 pdf 阅读器的“附件”面板中查看。
- 注释附件:文件将被添加到页面的特定位置,且在页面上以图标形式显示;审阅者可以双击图标打开文件。
本文将介绍如何使用 spire.pdf for python 在 python 中添加或删除 pdf 文档中的附件。
安装 spire.pdf for python
本教程需要用到 spire.pdf for python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 vs code 中。
pip install spire.pdf
如果您不确定如何安装,请参考此教程: 如何在 vs code 中安装 spire.pdf for python
python 在 pdf 中添加文档附件
spire.pdf for python 提供的 pdfdocument.attachments.add() 方法即可轻松地向“附件”面板添加附件。 以下是详细步骤。
- 创建一个 pdfdocument 对象。
- 使用 pdfdocument.loadfromfile() 方法加载 pdf 文件。
- 基于外部文件创建一个 pdfattachment 对象。
- 使用 pdfdocument.attachments.add() 方法将附件添加到 pdf 文档中。
- 使用 pdfdocument.savetofile() 方法保存结果文件。
- python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个空的pdf文档对象
doc = pdfdocument()
# 从指定文件加载pdf文档
doc.loadfromfile("团建活动方案.pdf")
# 创建一个pdfattachment对象,指定要添加的附件文件为"参与人员名单.xlsx"
attachment = pdfattachment("参与人员名单.xlsx")
# 将附件添加到pdf文档中
doc.attachments.add(attachment)
# 将修改后的pdf文档保存到新的文件中
doc.savetofile("添加文档附件.pdf")
doc.close()
python 在 pdf 中的添加注释附件
注释附件将以图标的形式显示在特定页面上。spire.pdf for python 提供的 pdfpagebase.annotationswidget.add() 方法就是向 pdf 中添加注释附件,以下是详细步骤。
- 创建 pdfdocument 对象。
- 使用 pdfdocument.loadfromfile() 方法加载 pdf 文件。
- 使用 pdfdocument. pages[pageindex] 属性获取需要添加注释的页面。
- 基于外部文件创建一个 pdfattachmentannotation 对象。
- 使用 pdfpagebase.annotationswidget.add() 方法将注释附件添加该页面。
- 使用 pdfdocument.savetofile() 方法保存结果文件。
- python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个pdfdocumet对象
doc = pdfdocument()
# 从指定文件加载一个pdf文档
doc.loadfromfile("团建活动方案.pdf")
# 获取文档的第一页
page = doc.pages[0]
# 定义画刷为红色
brush = pdfbrushes.get_red()
# 创建pdftruetypefont字体对象,字体名称为"宋体",大小为18.0,加粗,启用unicode
font = pdftruetypefont("宋体", 18.0, pdffontstyle.bold, true)
# 设置绘制文本的起始点坐标xp和yp
xp = float(40)
yp = float(page.canvas.clientsize.height - 80)
# 创建字符串格式对象,设置文本对齐方式为左对齐
format1 = pdfstringformat(pdftextalignment.left)
# 要绘制的文本内容
label = "在此附上详细安排的附件:"
# 在页面上绘制文本
page.canvas.drawstring(label, font, brush, xp, yp, format1)
# 计算绘制文本所占宽度
textwidth = font.measurestring(label).width
# 创建矩形对象bounds,指定注释图标的位置和大小
bounds = rectanglef(float(xp textwidth 5), yp, float(20), float(15))
# 创建流对象data,读取附件文件"详细安排.pptx"
data = stream("详细安排.pptx")
# 创建pdf附件注释对象annotation,指定图标位置、附件文件名和数据
annotation = pdfattachmentannotation(bounds, "详细安排.pptx", data)
# 设置注释的颜色为橙色
annotation.color = pdfrgbcolor(color.get_orange())
# 设置注释为只读
annotation.flags = pdfannotationflags.readonly
# 设置注释的图标为图表类型
annotation.icon = pdfattachmenticon.graph
# 设置注释的文本内容
annotation.text = "双击以打开附件。"
# 将注释对象添加到页面的注释集合中
page.annotationswidget.add(annotation)
# 将修改后的pdf文档保存到新的文件中
doc.savetofile("添加注释附件.pdf")
doc.close()
python 删除 pdf 中的文档附件
pdf 中的文档附件可以通过 pdfdocument.attachments 来访问,并且可以使用 pdfattachmentcollection 的 removeat(attachmentindex) 方法来删除特定的附件或 clear() 方法来删除全部附件。以下步骤详细介绍了如何从 pdf 中删除文档附件:
- 创建一个 pdfdocument 对象。
- 使用 pdfdocument.loadfromfile() 方法加载 pdf 文件。
- 使用 pdfdocument.attachments 获取 pdf 文件中的文档附件集合。
- 使用 pdfattachmentcollection.removeat() 方法删除特定附件。若要删除全部附件,则可使用 pdfattachmentcollection. clear() 方法。
- 使用 pdfdocument.savetofile() 方法保存结果文件。
- python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个pdfdocument对象
doc = pdfdocument()
# 从指定文件加载一个pdf文档
doc.loadfromfile("文档附件.pdf")
# 获取pdf文档中的附件对象集合
attachments = doc.attachments
# 删除pdf文件的第一个附件(这里索引从0开始)
attachments.removeat(0)
# 删除所有附件
# attachments.clear()
# 将修改后的pdf文档保存到新的文件中
doc.savetofile("删除一个附件.pdf")
doc.close()
python 删除 pdf 中的注释附件
注释是基于页面的元素。要获取文档中的所有注释,我们必须先遍历文档的所有页面并获取每一个页面中的所有注释,然后判断某个注释是否是注释附件。最后,使用 remove() 方法从注释集合中删除注释附件。以下步骤详细介绍了如何从 pdf 中删除注释附件:
- 创建一个 pdfdocument 对象。
- 使用 pdfdocument.loadfromfile() 方法加载 pdf 文件。
- 遍历文档中的页面,并使用 pagebase.annotationswidget 获取该页面的注释集合。
- 判断注释是否为 pdfattachmentannotationwidget 的实例。如果是,则使用pdfannotationcollection.remove() 方法删除注释附件。
- 使用 pdfdocument.savetofile() 方法保存结果文件。
- python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个pdfdocument对象
doc = pdfdocument()
# 从指定文件加载一个pdf文档
doc.loadfromfile("注释附件.pdf")
# 遍历pdf文档中的每一页
for i in range(doc.pages.count):
# 获取当前页
pagebase = doc.pages[i]
# 遍历当前页的注释
for j in range(pagebase.annotationswidget.count):
# 获取当前注释
annotationwidget = pagebase.annotationswidget[j]
# 检查注释是否属于pdfattachmentannotationwidget类型
if isinstance(annotationwidget, pdfattachmentannotationwidget):
# 从当前页移除该注释
pagebase.annotationswidget.remove(annotationwidget)
# 将修改后的pdf文档保存到新的文件中
doc.savetofile("删除注释附件.pdf")
doc.close()
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。