如何向 PDF 添加印章 — 使用 Adobe Acrobat 和 Python

在文档审阅、审批和分发流程中,向 PDF 添加印章是一项常见操作。印章通常用于将文件标记为已批准草稿机密,或者用于添加公司徽标、官方印章等视觉元素。

在实际应用中,PDF 印章通常通过桌面软件手动添加,或作为自动化流程的一部分以编程方式添加。虽然许多工具都可以在 PDF 中放置文本或图像,但只有少数工具能够创建在使用 Adobe Acrobat 等 PDF 编辑器重新打开文档时仍可移动和编辑的印章。

本文将介绍两种可靠且广泛使用的 PDF 添加印章方法

每种方法都会演示如何添加文本印章和图像印章,帮助你选择最适合自己工作流的方案。

什么是 PDF 印章?

PDF 印章在 PDF 规范中是以橡皮图章注释(Rubber Stamp Annotation)的形式实现的。与普通文本或图像相比,印章具有以下特点:

  • 可以在 Adobe Acrobat 中自由移动
  • 显示在“注释 / 印章”面板中
  • 可以在多个文档之间重复使用
  • 会被明确标识为注释,而不是页面内容

在文档后续被审阅、修订或审计时,这一区别尤为重要。

方法 1:使用 Adobe Acrobat 添加文本和图像印章

Adobe Acrobat 内置了对 PDF 印章的支持,是最常用的手动、可视化文档审阅和审批工具之一。它允许你添加基于文本或图像的印章,并直接在页面上调整其外观。

使用 Adobe Acrobat 添加文本印章

Adobe Acrobat 提供了多种预定义的文本印章,例如已批准、草稿和机密,同时也支持创建和自定义印章。

详细步骤

  1. 在 Adobe Acrobat 中打开 PDF 文件。
  2. 依次点击工具图章
    进入工具-图章
  3. 选择一个内置文本印章。
    选择内置图章
  4. 在页面任意位置单击以放置印章。
    将图章放置到页面
  5. 根据需要调整印章大小或位置。
  6. 右键单击印章并选择属性,可进一步自定义其外观(如颜色、不透明度)以及作者、主题等印章信息。
    自定义图章外观
  7. 保存文档。

添加完成后,印章仍然可以移动和编辑,方便你后续调整位置或更新属性。

使用 Adobe Acrobat 添加图像印章

图像印章通常用于公司徽标官方印章扫描签名。Acrobat 允许你将图像文件转换为可重复使用的自定义印章。

详细步骤

  1. 准备一个 PNG 或 JPG 格式的图像文件。
  2. 在 Acrobat 中,依次点击工具图章自定义图章创建
    创建自定义图章
  3. 导入图像并将其保存为自定义印章。
    导入图片
  4. 将印章分配到指定分类,方便后续复用。
    将自定义印章分配到指定分类
  5. 打开图章或图章调板,选择新创建的印章并单击页面进行放置。
    放置新建的图章到页面
  6. 调整印章大小、位置和透明度。
    调整图章大小位置和透明度
  7. 保存文档。

以该方式创建的图像印章在功能和交互行为上与文本印章完全一致,可在 Acrobat 中移动、复用,并通过印章管理面板进行管理。

Adobe Acrobat 的优点与局限

优点

  • 全面支持文本和图像印章。
  • 可精确控制印章的位置和外观。
  • 非常适合单个文档或少量文件的编辑。

局限

  • 完全依赖手动操作。
  • 不适合批量处理或自动化场景。

方法 2:使用 Python(Spire.PDF)添加文本和图像印章

对于开发者和自动化工作流而言,以编程方式添加印章通常是最高效、最可扩展的解决方案。你无需在每个文档中手动放置印章,而是可以一次性定义印章样式,并将其一致地应用到一个或多个 PDF 文件中。

Spire.PDF for Python 提供了用于创建和应用印章注释的 API,使你可以精确控制布局、样式和位置。该方法尤其适用于以下场景:

  • 批量处理大量 PDF 文件。
  • 自动化审批或审阅流程。
  • 后台或服务器端文档生成。

使用 Python 向 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from spire.pdf.common import *
from spire.pdf import *
from datetime import *

# 创建一个 PdfDocument 对象
doc = PdfDocument()

# 加载 PDF 文档
doc.LoadFromFile(r"C:\Users\Administrator\Desktop\input.pdf")

# 获取特定页面
page = doc.Pages.get_Item(1)

# 创建一个 PdfTemplate 对象
template = PdfTemplate(220.0, 50.0, True)

# 创建两个字体
font1 = PdfTrueTypeFont("黑体", 16.0, 0, True)
font2 = PdfTrueTypeFont("宋体", 10.0, 0, True)

# 创建一个纯色画刷和一个渐变画刷
solidBrush = PdfSolidBrush(PdfRGBColor(Color.get_Blue()))
rectangle1 = RectangleF(PointF(0.0, 0.0), template.Size)
linearGradientBrush = PdfLinearGradientBrush(rectangle1, PdfRGBColor(Color.get_White()), PdfRGBColor(Color.get_LightBlue()), PdfLinearGradientMode.Horizontal)

# 创建一个笔
pen = PdfPen(solidBrush)

# 创建一个圆角矩形路径
CornerRadius = 10.0
path = PdfPath()
path.AddArc(template.GetBounds().X, template.GetBounds().Y, CornerRadius, CornerRadius, 180.0, 90.0)
path.AddArc(template.GetBounds().X + template.Width - CornerRadius, template.GetBounds().Y, CornerRadius, CornerRadius, 270.0, 90.0)
path.AddArc(template.GetBounds().X + template.Width - CornerRadius, template.GetBounds().Y + template.Height - CornerRadius, CornerRadius, CornerRadius, 0.0, 90.0)
path.AddArc(template.GetBounds().X, template.GetBounds().Y + template.Height - CornerRadius, CornerRadius, CornerRadius, 90.0, 90.0)
path.AddLine(template.GetBounds().X, template.GetBounds().Y + template.Height - CornerRadius, template.GetBounds().X, template.GetBounds().Y + CornerRadius / 2)

# 在模板上绘制路径
template.Graphics.DrawPath(pen, path)
template.Graphics.DrawPath(linearGradientBrush, path)

# 在模板上绘制文本
string1 = "已审核\n"
string2 = "销售经理 Lee, 审核时间:" + datetime.now().strftime("%m %d, %Y")
template.Graphics.DrawString(string1, font1, solidBrush, PointF(5.0, 5.0))
template.Graphics.DrawString(string2, font2, solidBrush, PointF(2.0, 28.0))

# 创建一个橡皮图章,指定其大小和位置
rectangle2 = RectangleF(60.0, 250.0, 220.0, 50.0)
stamp = PdfRubberStampAnnotation(rectangle2)

# 创建一个 PdfAppearance 对象并将模板应用为其正常状态
appearance = PdfAppearance(stamp)
appearance.Normal = template

# 将外观应用于印章
stamp.Appearance = appearance

# 将印章注释添加到注释集合中
page.AnnotationsWidget.Add(stamp)

# 保存文件
doc.SaveToFile("DynamicStamp.pdf", FileFormat.PDF)
doc.Dispose()

当输出文件在 Adobe Acrobat 中打开时,该印章可以像手动添加的印章一样进行移动、缩放和管理。

使用Python创建动态文本印章

使用 Python 向 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
from spire.pdf import *
from spire.pdf.common import *

# 加载 PDF 文档
doc = PdfDocument()
doc.LoadFromFile(r"C:\Users\Administrator\Desktop\input.pdf")

# 获取目标页面
page = doc.Pages.get_Item(1)

# 加载图像
image = PdfImage.FromFile(r"C:\Users\Administrator\Desktop\internal-document.png")
w, h = float(image.Width), float(image.Height)

# 创建模板并绘制图像
template = PdfTemplate(w, h, True)
template.Graphics.DrawImage(image, 0.0, 0.0, w, h)

# 定义印章位置
rect = RectangleF(60.0, 250.0, w, h)

# 创建并应用图像印章
stamp = PdfRubberStampAnnotation(rect)
appearance = PdfAppearance(stamp)
appearance.Normal = template
stamp.Appearance = appearance
page.AnnotationsWidget.Add(stamp)

# 保存并关闭
doc.SaveToFile("output/ImageStamp.pdf", FileFormat.PDF)
doc.Dispose()

该图像印章可以在 Adobe Acrobat 中重新定位或调整大小,其行为与通过 Acrobat 界面创建的印章完全一致。

使用Python创建图片印章

何时选择 Python 而不是 Adobe Acrobat

在以下情况下,基于 Python 的方案更具优势:

  • 需要将相同印章应用到多个 PDF 文件。
  • 印章内容需要动态生成(例如日期、用户名或状态值)。
  • PDF 处理是自动化或后台工作流的一部分。

Adobe Acrobat 适合可视化的单次编辑,而 Python 更适合需要规模化处理的印章场景。

如需了解更多高级 PDF 处理场景,也可以参考其他 Spire.PDF 在线教程,例如添加页眉页脚、为 PDF 页面添加水印,或以编程方式添加注释和签名等。这些内容可以帮助你进一步扩展 PDF 工作流。

功能对比

功能 Adobe Acrobat Python(Spire.PDF)
文本印章
图像印章
橡皮图章注释(Rubber Stamp Annotation)
可在 Acrobat 中移动
批量处理
自动化

总结

根据你处理文档的频率以及对控制能力的需求不同,向 PDF 添加印章可以采用不同方式。

  • Adobe Acrobat 非常适合注重可视化精度的手动操作,适用于偶尔的印章添加、审阅和审批场景。
  • Python + Spire.PDF 更适合自动化工作流,支持以编程方式添加文本和图像印章,非常适合批量处理或集成到现有系统中。

两种方式都支持常见的印章需求,包括状态标记以及徽标或印章等图像标识。选择最适合你工作流的方法,可以让 PDF 印章管理更加高效、一致且易维护。

FAQs

Q1. 添加普通文本或图像与添加印章注释有什么区别?

普通文本或图像通常作为固定的页面内容存在,而印章注释是可交互元素,可以在 Adobe Acrobat 等 PDF 编辑器中移动、调整大小和管理。

Q2. 为什么某些 PDF 工具添加的印章在 Adobe Acrobat 中无法编辑?

因为这些工具将内容直接“扁平化”到页面中,而不是创建注释。被扁平化的内容是静态的,无法重新定位或作为印章复用。

Q3. 使用 Python 添加的印章之后还能在 Adobe Acrobat 中编辑吗?

可以。通过编程方式创建的印章注释与在 Acrobat 中添加的印章行为一致,仍然可以完全编辑。

Q4. 什么时候应该使用编程方式添加印章,而不是 PDF 编辑器?

当需要自动化、批量处理或动态内容时,应选择编程方式;而 PDF 编辑器更适合快速的手动修改。

你可能还感兴趣