如何在 PDF 中添加附件(Adobe Acrobat 与 Python 操作指南)

你有没有遇到过这样的情况:给客户发了一份 PDF 发票,却忘了附上 Excel 明细表;或者发送了一份技术报告,但漏掉了源代码。如果能把这些相关文件整合到一起,就能完美避免这种尴尬。掌握如何在 PDF 中添加附件,不仅能确保接收方在一个文档中就能拿到所有必需数据,无需多次重复发送文档,还能提高工作效率。在本指南中,你将学习如何使用 Adobe Acrobat 手动为 PDF 添加附件,以及如何利用 Python 实现自动化处理。

目录

理解 PDF 附件的两种形式

在开始动手操作之前,我们先来了解一下 PDF 是如何处理嵌入文件的。根据你的具体需求,你可以选择隐藏附件文件,也可以将其展示到页面上,方便读者随读随点。

  • 文档级附件: 这种形式类似于邮件附件。外部文件被直接嵌入到 PDF 文档内部,一般隐藏在阅读器的侧边栏面板中。这种方法非常适合用来打包大型数据集、源代码包或各类数据支持文档。

提示: 如果你需要将多个不同格式的相关文件打包到一个 PDF 文件中,还可以考虑创建 PDF 文件包,它能提供更清晰、更有条理的附件管理方式。

  • 注释型附件: 这是一种绑定在特定页面位置的附件。它会在页面的指定坐标处显示一个图标(如回形针或大头针),读者只需双击该图标,就能立即打开对应文件。这种方式更加适合在正文或段落旁直接引用源文件。

对比一览表

选对附件形式不仅能节省时间,还能大大提升读者的阅读体验。你可以通过以下对比,快速决定哪个方案更适合当下的需求:

功能特性 文档级附件 注释型附件
可见性 页面上完全隐藏,仅在附件侧边栏中可见。 在页面的特定坐标处显示一个可点击的图标。
用户操作 用户需要打开侧边栏面板,在文件列表中浏览查找。 用户在阅读特定段落时,直接双击页面上的图标。
核心用途 归档原始数据、打包项目源代码或附带完整的 Excel 表格。 上下文引用、图表深度解析、法律证据链补充。
应用建议 最适合自动化数据归档 最适合交互式阅读体验

总而言之,如果你想打包原始数据且不破坏 PDF 现有的排版布局,请选择文档附件;如果你希望读者在读到某一段落时,能立刻查看对应的参考源文件,那么注释附件是更好的选择。

使用 Adobe Acrobat 手动为 PDF 添加附件

如果只有少量文件需要处理,并且你更加喜欢直观清晰的操作界面,那么使用 Adobe Acrobat 手动添加附件是一个完美的方案。作为主流的 PDF 编辑器之一,Adobe Acrobat 可以让你轻松嵌入外部文件,无论是作为隐藏的文档级附件,还是作为批注附件添加到页面上。

添加文档级附件

  • 第一步:在 Adobe Acrobat 中打开目标 PDF 文件。
  • 第二步:展开左侧的导航面板,点击附件图标。
  • 第三步:点击面板顶部的添加文件按钮,从电脑中选择需要的文件,然后保存 PDF 即可。

使用 Adobe 将附件添加到 PDF 中

添加页面批注附件

  • 第一步:点击右侧工具栏中的注释,打开批注工具栏。
  • 第二步:在工具栏上点击添加附件工具。

使用 Adobe 添加注释附件

  • 第三步:在 PDF 页面上你想放置附件图标的位置点击一下。
  • 第四步:从弹出的窗口中选择附件文件,并在属性设置中挑选喜欢的图标样式,最后保存文档。

选择附件展示的图标样式

使用 Free Spire.PDF 通过代码为 PDF 添加附件

在 PDF 中手动添加两三个附件的确很轻松,但如果要处理几十甚至上百个文档呢?当需要将添加 PDF 附件功能集成到企业自动化流程中时,例如自动将对账单关联到发票,或将源文件嵌入到技术报告中,手动操作在这时就显得效率低下。此时,你可以尝试通过编程的方式自动化添加 PDF 附件。借助 Free Spire.PDF for Python,只需几行代码就能轻松搞定这个任务。

作为一个独立且免费的组件,Free Spire.PDF for Python 不依赖于 Adobe Acrobat,可以让你直接在 Python 环境中操作 PDF 底层结构,全面支持直接在 PDF 中添加附件和在页面上添加批注附件两种形式。

直接添加 PDF 附件

以下脚本展示了如何将外部文件直接添加到 PDF 的全局附件集合中。代码实现的核心逻辑是:创建一个 PdfAttachment 对象,然后通过 PdfDocument.Attachments.Add() 方法将目标文件添加到源 PDF 中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from spire.pdf import *
from spire.pdf.common import *

# 初始化文档对象
doc = PdfDocument()

# 加载现有的 PDF 文件
doc.LoadFromFile("/input/示例文档.pdf")

# 通过传入文件路径创建文档级附件
attachment_1 = PdfAttachment("/input/销售汇总.xlsx")
attachment_2 = PdfAttachment("/input/sales report.xlsx")

# 将附件添加到全局附件集合中
doc.Attachments.Add(attachment_1)
doc.Attachments.Add(attachment_2)

# 保存最终的 PDF 文档并释放资源
doc.SaveToFile("/output/PDF附件.pdf")
doc.Close()

使用 Free Spire.PDF 将附件添加到 PDF 中

以批注形式添加附件

以下代码示例将一个外部文件作为批注附件添加至 PDF 中,最终它会在第一页上显示为一个可点击的回形针图标。

其核心逻辑是:先通过 doc.Pages.get_Item() 获取目标页面,利用 RectangleF 定义其在页面上的精确坐标,并用初始化一个 PdfAttachmentAnnotation 对象。在自定义图标样式、颜色和悬停提示文字等属性后,使用 page.AnnotationsWidget.Add() 方法将其添加到 PDF 页面上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from spire.pdf import *
from spire.pdf.common import *

# 初始化 PdfDocument 对象并加载文件
doc = PdfDocument()
doc.LoadFromFile("/input/示例文档.pdf")

# 获取 PDF 第一页
page = doc.Pages.get_Item(0)

# 配置中文字体
font = PdfTrueTypeFont("SimHei", 16.0, PdfFontStyle.Bold, True)

text_str = "这是一个附件"
x = 50.0
y = doc.Pages.get_Item(0).ActualSize.Height - 300.0

# 在画布上绘制提示文本
page.Canvas.DrawString(text_str, font, PdfBrushes.get_Blue(), x, y)

# 加载附件文件流
data_stream = Stream("/input/附件文档.xlsx")

# 动态计算附件图标的位置(紧跟在文本右侧)
text_size = font.MeasureString(text_str)
bounds = RectangleF((x + text_size.Width + 5.0), y, 15.0, 15.0)

# 创建并配置附件批注
annotation = PdfAttachmentAnnotation(bounds, "attachment.xlsx", data_stream)
annotation.Color = PdfRGBColor(Color.get_Blue())
annotation.Flags = PdfAnnotationFlags.Default
annotation.Icon = PdfAttachmentIcon.Paperclip
annotation.Text = "点击查看附件"

# 添加批注
page.AnnotationsWidget.Add(annotation)

# 保存文件
doc.SaveToFile("/output/批注附件.pdf")
doc.Close()

通过 Free Spire.PDF 添加注释附件

注意: 如果文件在协同评审场景中打开,这些附件批注可以与标准的 PDF 修订跟踪字段同步。

在 PDF 中添加附件的注意事项

添加 PDF 附件的步骤并不难,但要让最终的文档更符合专业规范并确保接收方顺利打开,还需要注意以下几点:

  • 文件体积控制: 当文件作为附件添加到 PDF 中时,PDF 的整体体积会增加。例如嵌入一个 50MB 的视频会导致 PDF 无法通过邮件发送。建议在嵌入前对文件进行压缩,或者对大文件改用安全的在线链接。

推荐阅读:如何压缩 PDF 文档?3 种方法高效减小文件体积

  • 安全性与文件格式限制: 为了保证接收方能正常打开,建议尽量使用安全的文件格式,如添加 .txt.docx.xlsx
  • 如何提取附件: 添加附件到 PDF 是常见的需求,反之亦然。如果你在构建 PDF 附件管理系统,后续可以使用 PdfAttachment.DataPdfAttachmentAnnotation.Data 来读取并重新提取这些附件到你的数据库中。

总结

在本文中,我们主要介绍了两种在 PDF 中添加附件的主流方案:隐藏在侧边栏的文档附件,以及显示在页面特定位置的批注附件。同时,我们还介绍了通过 Adobe Acrobat 进行手动操作,以及利用 Free Spire.PDF for Python 进行代码自动化的具体实现步骤。

无论是应急处理少量文档的日常办公,还是需要将文件打包融入自动化业务工作流,本篇指南都能帮到你。根据实际业务场景选择最合适的方案,开始优化你的 PDF 处理流程吧!