在 PDF 文档中添加注释是一种常见的操作,可用于插入评论、突出显示文本、绘制图形等。这项功能在协作审阅、教育领域以及专业演示中尤为实用,它使用户能够直接在电子文档上标注关键信息,从而大幅提升沟通和工作效率。
本文将介绍如何使用 Spire.PDF for Python 在 Python 中给 PDF 文档添加多种类型的注释。
- 在 PDF 中添加文本标记注释
- 在 PDF 中添加自由文本注释
- 在 PDF 中添加弹出式注释
- 在 PDF 中添加印章注释
- 在 PDF 中添加形状注释
- 在 PDF 中添加网页链接注释
- 在 PDF 中添加文件链接注释
- 在 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 文档中的重要内容。如果您想添加文本标注注释,首先需要用到 PdfTextFinder 类来查找目标文本。找到文本后,再创建 PdfTextMarkupAnnotation 对象,并将其应用到 PDF 文档中。
以下是使用 Python 向 PDF 添加文本标注注释的步骤:
- 创建一个 PdfDocument 类的对象。
- 加载一个 PDF 文档。
- 获取该文档的其中一页。
- 通过 PdfTextFinder 类在该页上查找指定文本。
- 根据找到的文本创建一个 PdfTextMarkupAnnotation 类的对象。
- 利用 PdfPageBase.AnnotationsWidget.Add() 方法在该页上添加注释。
- 保存修改后的文档为新的 PDF 文件。
- Python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个 PdfDocument 类的对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile("/示例文档.pdf")
# 获取文档中的一页
page = doc.Pages[0]
# 在该页上创建一个 PdfTextFinder 对象
finder = PdfTextFinder(page)
# 设置查找的选项
finder.Options.Parameter = TextFindParameter.WholeWord
# 查找指定文本的实例
fragments = finder.Find("AI绘画的优势和弊端不容忽视,它既为艺术创作带来了前所"+
"未有的机遇,也引发了深刻的社会讨论和法律思考");
# 获取第一个实例
textFragment = fragments[0]
# 自定义注释内容
text = "这是一个文本标注注释"
# 遍历文本边界
for i in range(len(textFragment.Bounds)):
# 获取边界
rect = textFragment.Bounds[i]
# 创建文本标记注释
annotation = PdfTextMarkupAnnotation("Administrator", text, rect)
# 设置标记的颜色
annotation.TextMarkupColor = PdfRGBColor(Color.get_Green())
# 将注释添加到注释集合中
page.AnnotationsWidget.Add(annotation)
# 保存修改后的文档
doc.SaveToFile("/标记注释.pdf")
doc.Dispose()
在 Python 中向 PDF 中添加自由文本注释
通过自由文本注释,您可以将自由形式的文本批注直接添加到 PDF 文档中。想要在指定位置添加自由文本注释,您可以使用 PdfTextFinder 类来获取所查找文本的坐标信息,然后根据坐标创建一个 PdfFreeTextAnnotation 对象,最后将其添加到文档中。
以下是在 Python 中向 PDF 添加自由文本注释的步骤:
- 创建一个 PdfDocument 对象。
- 加载一个 PDF 示例文件。
- 获取文档中的指定页。
- 使用 PdfTextFinder 类在页面中查找特定文本。
- 根据找到的文本坐标信息创建一个 PdfFreeTextAnnotation 对象。
- 使用 PdfFreeTextAnnotation.Text 属性设置注释内容。
- 通过 PdfPageBase.AnnotationsWidget.Add() 方法将注释添加到页面。
- 将修改后的文档保存为新的 PDF 文件。
- Python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个 PdfDocument 类的对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile("/示例文档.pdf")
# 获取文档中的一页
page = doc.Pages[0]
# 在该页上创建一个 PdfTextFinder 对象
finder = PdfTextFinder(page)
# 设置查找的选项
finder.Options.Parameter = TextFindParameter.WholeWord
# 查找指定文本的实例
fragments = finder.Find("弊端");
# 获取第一个实例
textFragment = fragments[0]
# 获取文本边界
rect = textFragment.Bounds[0]
# 获取文本边界的坐标以添加注释
right = rect.Right
top = rect.Top
# 创建自由文本注释注释
rectangle = RectangleF(right + 5, top + 2, 160.0, 18.0)
textAnnotation = PdfFreeTextAnnotation(rectangle)
# 设置注释内容
textAnnotation.Text = "这是一个自由文本标注"
# 设置注释的其它属性
font = PdfTrueTypeFont("微软雅黑", 13.0, PdfFontStyle.Italic, True)
border = PdfAnnotationBorder(1.0)
textAnnotation.Font = font
textAnnotation.Border = border
textAnnotation.BorderColor = PdfRGBColor(Color.get_SkyBlue())
textAnnotation.Color = PdfRGBColor(Color.get_LightBlue())
textAnnotation.Opacity = 1.0
# 将注释添加到页面的注释集合中
page.AnnotationsWidget.Add(textAnnotation)
# 保存修改后的文档
doc.SaveToFile("/自由文本注释.pdf")
doc.Dispose()
在 Python 中向 PDF 中添加弹出式注释
弹出式注释可以以弹窗的形式展示附加信息或内容。要确定添加弹出注释的位置,仍然可以使用 PdfTextFinder 类来获取坐标信息。在此之后,您可以创建 PdfPopupAnnotation 对象并将其添加到 PDF 文档中。
通过 Python 在 PDF 文档中添加弹出式注释的具体步骤可以参考下方内容:
- 实例化一个 PdfDocument 对象。
- 从指定位置加载 PDF 文档。
- 获取文档中的某一页。
- 用 PdfTextFinder 类查找当前页面的所需文本。
- 根据文本的坐标信息创建一个 PdfPopupAnnotation 对象。
- 通过 PdfPopupAnnotation.Text 属性设置注释内容。
- 使用 PdfPageBase.AnnotationsWidget.Add() 方法将注释添加到页面。
- 保存修改后的文件为新的 PDF 文件。
- Python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个 PdfDocument 类的对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile("/示例文档.pdf")
# 获取文档中的一页
page = doc.Pages[0]
# 在该页上创建一个 PdfTextFinder 对象
finder = PdfTextFinder(page)
# 设置查找的选项
finder.Options.Parameter = TextFindParameter.WholeWord
# 查找指定文本的实例
fragments = finder.Find("弊端");
# 获取第一个实例
textFragment = fragments[0]
# 获取文本边界
rect = textFragment.Bounds[0]
# 获取文本边界的坐标以添加注释
right = rect.Right
top = rect.Top
# 创建注释
rectangle = RectangleF(right + 5, top, 30.0, 30.0)
popupAnnotation = PdfPopupAnnotation(rectangle)
# 自定义注释内容
popupAnnotation.Text = "这是一个弹出式的注释"
# 设置注释的图标和颜色
popupAnnotation.Icon = PdfPopupIcon.Comment
popupAnnotation.Color = PdfRGBColor(Color.get_Red())
# 将注释添加到文档的注释集合中
page.AnnotationsWidget.Add(popupAnnotation)
# 保存修改后的文档
doc.SaveToFile("/弹出式注释.pdf")
doc.Dispose()
在 Python 中向 PDF 中添加印章注释
在 PDF 文档中,印章注释是一种允许用户向 PDF 文件添加自定义“印章”或符号的注释类型。要设置图章注释的外观,可以使用 PdfTemplate 类。然后,创建 PdfRubberStampAnnotation 对象,并将之前自定义的模板设置为其外观,最后将该注释添加到 PDF 文档中。
使用 Python 向 PDF 添加印章注释的步骤如下:
- 创建一个 PdfDocument 类的对象。
- 读取一个 PDF 文档。
- 访问 PDF 文档中的一页。
- 创建 PdfTemplate 对象,并在模板上绘制图像。
- 创建一个 PdfRubberStampAnnotation 对象,并将模板设置为其外观。
- 使用 PdfPageBase.AnnotationsWidget.Add() 方法将注释添加到页面。
- 将修改后的文档保存为新的 PDF 文件。
- Python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个 PdfDocument 类的对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile("/示例文档.pdf")
# 获取文档中的一页
page = doc.Pages[0]
# 加载一个图像
image = PdfImage.FromFile("/印章.png")
# 设置图像印章的宽度和高度
width = (float)(image.Width*0.5)
height = (float)(image.Height*0.5)
# 根据图像的大小创建一个 PdfTemplate 对象
template = PdfTemplate(width, height, True)
# 在模板上绘制图像
template.Graphics.DrawImage(image, 0.0, 0.0, width, height)
# 创建一个印章注释,设置它在页面上的位置
rect = RectangleF((float) (page.ActualSize.Width/2 - width/2), 90.0, width, height)
stamp = PdfRubberStampAnnotation(rect)
# 创建 PdfAppearance 对象
pdfAppearance = PdfAppearance(stamp)
# 设置模板为注释的默认样式
pdfAppearance.Normal = template
# 将样式应用到注释上
stamp.Appearance = pdfAppearance
# 将注释添加到 PDF 文档中
page.AnnotationsWidget.Add(stamp)
# 保存修改后的文档
doc.SaveToFile("/印章注释.pdf")
doc.Dispose()
在 Python 中向 PDF 中添加形状注释
在 PDF 文档中,形状注释是一种允许用户向 PDF 文件添加各种几何形状的注释。Spire.PDF for Python 提供了 PdfPolyLineAnnotation、PdfLineAnnotation 和 PdfPolygonAnnotation 等类,使开发者能够向 PDF 文件中添加不同类型的形状注释。
使用 Python 向 PDF 添加形状注释的步骤如下:
- 创建一个 PdfDocument 对象。
- 从指定位置加载 PDF 文档。
- 获取文档中的指定页面。
- 使用 PdfTextFinder 类查找该页面中的特定文本。
- 根据找到的文本坐标创建一个 PdfPolyLineAnnotation 对象。
- 通过 PdfPolyLineAnnotation.Text 属性自定义注释内容。
- 使用 PdfPageBase.AnnotationsWidget.Add() 方法将注释添加到页面。
- 保存修改后的 PDF 文件。
- Python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个 PdfDocument 类的对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile("/示例文档.pdf")
# 获取文档中的一页
page = doc.Pages[0]
# 在该页上创建一个 PdfTextFinder 对象
finder = PdfTextFinder(page)
# 设置查找的选项
finder.Options.Parameter = TextFindParameter.WholeWord
# 查找指定文本的实例
fragments = finder.Find("AI绘画的优势和弊端不容忽视");
# 获取第一个实例
textFragment = fragments[0]
# 获取文本边界
rect = textFragment.Bounds[0]
# 获取文本边界的坐标以添加注释
left = rect.Left
top = rect.Top
right = rect.Right
bottom = rect.Bottom
# 创建一个形状注释
polyLineAnnotation = PdfPolyLineAnnotation(page, [PointF(left, top), PointF(right, top), PointF(right - 5, bottom), PointF(left - 5, bottom), PointF(left, top)])
# 自定义注释内容
polyLineAnnotation.Text = "这是一个形状注释"
# 将注释添加到文档的注释集合中
page.AnnotationsWidget.Add(polyLineAnnotation)
# 保存修改后的文档
doc.SaveToFile("/形状注释.pdf")
doc.Dispose()
在 Python 中向 PDF 中添加网页链接注释
PDF 中的网页链接注释是一种可以嵌入超链接的注释,便于用户访问在线资源或相关信息。您可以使用 PdfTextFinder 类来查找 PDF 文档中的指定文本,并基于该文本创建一个 PdfUriAnnotation 对象,最后将其添加 PDF 文档的特定位置。
使用 Python 向 PDF 添加网页链接注释的详细步骤如下:
- 实例化一个 PdfDocument 对象。
- 从指定位置加载 PDF 文件。
- 获取文件中的某个页面。
- 使用 PdfTextFinder 类在页面中查找特定文本。
- 根据文本的边界创建一个 PdfUriAnnotation 对象。
- 使用 PdfPageBase.AnnotationsWidget.Add() 方法将注释添加到页面。
- 保存修改后的新 PDF 文件。
- Python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个 PdfDocument 类的对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile("/示例文档.pdf")
# 获取文档中的一页
page = doc.Pages[0]
# 在该页上创建一个 PdfTextFinder 对象
finder = PdfTextFinder(page)
# 设置查找的选项
finder.Options.Parameter = TextFindParameter.WholeWord
# 查找指定文本的实例
fragments = finder.Find("AI绘画的优势和弊端不容忽视");
# 获取第一个实例
textFragment = fragments[0]
# 获取文本边界
bound = textFragment.Bounds[0]
# 创建一个 URL 注释
urlAnnotation = PdfUriAnnotation(bound, "https://www.e-iceblue.cn/");
# 将注释添加到文档的注释集合中
page.AnnotationsWidget.Add(urlAnnotation)
# 保存修改后的文档
doc.SaveToFile("/网页链接注释.pdf")
doc.Dispose()
在 Python 中向 PDF 中添加文件链接注释
如果您需要在使用 PDF 文档时打开一个外部文件,可以在关键词上添加一个文件链接注释。它可以链接另一个 PDF、图片或文档。在 Python 中,您可以使用 PdfTextFinder 类查找 PDF 文档中的指定文本,并基于该文本创建 PdfFileLinkAnnotation 对象,最后将这个注释添加到页面上的指定位置。
下方是使用 Python 向 PDF 添加文件链接注释的详细步骤:
- 创建一个 PdfDocument 对象。
- 从指定位置加载一个 PDF 文件。
- 获取该文件中的某个页面。
- 使用 PdfTextFinder 类查找页面中的特定文本。
- 基于文本的边界创建一个 PdfFileLinkAnnotation 对象。
- 使用 PdfPageBase.AnnotationsWidget.Add() 方法将文件链接注释添加到页面。
- 将修改后的文档保存为新的 PDF 文件。
- Python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个 PdfDocument 类的对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile("/示例文档.pdf")
# 获取文档中的一页
page = doc.Pages[0]
# 在该页上创建一个 PdfTextFinder 对象
finder = PdfTextFinder(page)
# 设置查找的选项
finder.Options.Parameter = TextFindParameter.WholeWord
# 查找指定文本的实例
fragments = finder.Find("AI绘画的优势和弊端不容忽视");
# 获取第一个实例
textFragment = fragments[0]
# 获取文本边界
bound = textFragment.Bounds[0]
# 创建一个文件链接注释
fileLinkAnnotation = PdfFileLinkAnnotation(bound, "/AI绘画的利弊及法律应对.docx")
# 将注释添加到文档的注释集合中
page.AnnotationsWidget.Add(fileLinkAnnotation)
# 保存修改后的文档
doc.SaveToFile("/文件链接注释.pdf")
doc.Dispose()
在 Python 中向 PDF 中添加文档内链接注释
当您需要在 PDF 文档的某一个位置跳转到同一文件内另一个特定位置时,您可以尝试使用添加文档内链接注释。首先,通过 PdfTextFinder 类查找目标文本,然后实例化 PdfDocumentLinkAnnotation 对象,并设置其 Destination 属性,指定跳转目标位置,最后将其添加到 PDF 文档中。
- 创建一个 PdfDocument 对象。
- 读取一个 PDF 文档。
- 获取文档中的指定页面。
- 使用 PdfTextFinder 类查找页面中的所需文本。
- 根据文本的边界信息创建一个 PdfDocumentLinkAnnotation 对象。
- 使用 PdfDocumentLinkAnnotation.Destination 属性设置跳转目标。
- 通过 PdfPageBase.AnnotationsWidget.Add() 方法将该注释添加到页面的指定位置。
- 将修改后的文档保存为新的 PDF 文件。
- Python
from spire.pdf.common import *
from spire.pdf import *
# 创建一个 PdfDocument 类的对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile("/示例文档.pdf")
# 获取文档中的一页
page = doc.Pages[0]
# 在该页上创建一个 PdfTextFinder 对象
finder = PdfTextFinder(page)
# 设置查找的选项
finder.Options.Parameter = TextFindParameter.WholeWord
# 查找指定文本的实例
fragments = finder.Find("AI绘画的优势和弊端不容忽视");
# 获取第一个实例
textFragment = fragments[0]
# 获取文本边界
bound = textFragment.Bounds[0]
# 创建一个文档内链接形式的注释
documentLinkAnnotation = PdfDocumentLinkAnnotation(bound)
# 设置注释的目标页面
documentLinkAnnotation.Destination = PdfDestination(doc.Pages[1]);
# 将注释添加到页面的注释集合中
page.AnnotationsWidget.Add(documentLinkAnnotation)
# 保存修改后的文档
doc.SaveToFile("/文档内链接注释.pdf")
doc.Dispose()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。