使用Python给PDF添加文本超链接和图片超链接

 更新时间:2025年03月05日 10:08:38   作者:nuclear2011  
超链接是指向特定资源的链接,作为一种有效的导航工具,它能够帮助读者快速访问相关信息,通过在PDF文档中添加文本超链接和图片超链接,你可以显著提升文档的互动性和用户体验,这篇文章将详细介绍如何使用Python给PDF添加文本超链接和图片超链接,需要的朋友可以参考下

使用工具

要在Python应用程序中实现给PDF文档添加超链接,可以使用Spire.PDF for Python。它是一个专门用于在Python应用程序中创建、读取、操作和转换PDF文档的库。

你可以通过在终端运行以下命令来从PyPI安装Spire.PDF for Python:

pip install Spire.PDF

Python给PDF添加网页链接

网页链接可以帮助用户快速跳转到指定的外部网页。在PDF文档中添加网页链接,可以引导读者访问相关的在线资源,如文章、视频或网站等。在商业或教育等用途的PDF中经常用到网页链接。

Spire.PDF提供了PdfTextWebLink类,用于生成网页链接并将其绘制到PDF页面上。下面是具体实现代码:

from spire.pdf.common import *
from spire.pdf import *
 
# 创建PDF文档
doc = PdfDocument()
 
# 添加页面
page = doc.Pages.Add()
 
# 初始化x和y坐标
x = 10.0
y = 50.0
 
# 创建字体
label_font = PdfTrueTypeFont("宋体", 14.0, PdfFontStyle.Regular, True)
link_font = PdfTrueTypeFont("宋体", 14.0, PdfFontStyle.Underline, True)
 
# 在页面上绘制文本
label = "网页链接:"
format = PdfStringFormat()
format.MeasureTrailingSpaces = True
page.Canvas.DrawString(label, label_font, PdfBrushes.get_Orange(), x, y, format)
x += label_font.MeasureString(label, format).Width
 
# 在页面上绘制网页链接
web_link = PdfTextWebLink()
web_link.Text = "CSDN首页"
web_link.Url = "https://www.csdn.net/"
web_link.Font = link_font
web_link.Brush = PdfBrushes.get_Blue()
web_link.DrawTextWebLink(page.Canvas, PointF(x, y))
 
# 保存生成的PDF文件
doc.SaveToFile("网页链接.pdf")
doc.Close()

Python给PDF添加内部文件链接

内部文件链接可以让读者在同一PDF文档内快速跳转至不同的页面或章节。对于内容较长或结构复杂的文档,这种链接极大地改善了用户的导航体验,使他们能够更快速、准确地找到所需信息。

要给PDF添加内部文件链接,可以使用PdfDocumentLinkAnnotation类。下面是具体实现代码:

from spire.pdf.common import *
from spire.pdf import *
 
# 创建PDF文档
doc = PdfDocument()
 
# 添加两个页面
doc.Pages.Add()
doc.Pages.Add()
 
# 初始化x和y坐标
x = 10.0
y = 50.0
 
# 创建字体
label_font = PdfTrueTypeFont("宋体", 14.0, PdfFontStyle.Regular, True)
link_font = PdfTrueTypeFont("宋体", 14.0, PdfFontStyle.Underline, True)
 
# 在页面上绘制文本
label = "内部文件链接: "
format = PdfStringFormat()
format.MeasureTrailingSpaces = True
doc.Pages[0].Canvas.DrawString(label, label_font, PdfBrushes.get_Orange(), x, y, format)
x += label_font.MeasureString(label, format).Width
 
# 在页面上绘制文本
text = "跳转到第2页"
doc.Pages[0].Canvas.DrawString(text, link_font, PdfBrushes.get_Blue(), x, y)
 
# 创建矩形
rectangle = RectangleF(x, y, link_font.MeasureString(text).Width, link_font.MeasureString(text).Height)
# 创建内部文件链接注释
documentLinkAnnotation = PdfDocumentLinkAnnotation(rectangle)
# 设置注释边框
documentLinkAnnotation.Border = PdfAnnotationBorder(0.0)
# 指定目标页面的索引(从0开始)
destinationPageIndex = 1
# 设置注释的目标位置
documentLinkAnnotation.Destination = PdfDestination(destinationPageIndex, PointF(x, y), 1.0)
# 将注释添加到第一页
doc.Pages[0].Annotations.Add(documentLinkAnnotation)
 
# 保存生成的PDF文件
doc.SaveToFile("内部文件链接.pdf")
doc.Close()

Python给PDF添加外部文件链接

外部文件链接允许用户通过PDF直接打开其他文件,例如相关的文档、表格或多媒体文件。这种链接的设置有助于构建更丰富的资源环境,为用户提供更多的参考资料和辅助信息。

要给PDF添加外部文件链接,可以使用PdfFileLinkAnnotation类。下面是具体实现代码:

from spire.pdf.common import *
from spire.pdf import *
 
# 创建PDF文档
doc = PdfDocument()
 
# 添加页面
page = doc.Pages.Add()
 
# 初始化x和y坐标
x = 10.0
y = 50.0
 
# 创建字体
label_font = PdfTrueTypeFont("宋体", 14.0, PdfFontStyle.Regular, True)
link_font = PdfTrueTypeFont("宋体", 14.0, PdfFontStyle.Underline, True)
 
# 在页面上绘制文本
label = "外部文件链接: "
format = PdfStringFormat()
format.MeasureTrailingSpaces = True
doc.Pages[0].Canvas.DrawString(label, label_font, PdfBrushes.get_Orange(), x, y, format)
x += label_font.MeasureString(label, format).Width
 
# 在页面上绘制文本
text = "打开图片"
page.Canvas.DrawString(text, link_font, PdfBrushes.get_Blue(), x, y)
 
# 创建矩形
rectangle = RectangleF(x, y, link_font.MeasureString(text).Width, link_font.MeasureString(text).Height)
# 创建外部文件链接注释
fileLinkAnnotation = PdfFileLinkAnnotation(rectangle, "C:/Users/Administrator/Desktop/images.png")
# 设置注释边框
fileLinkAnnotation.Border = PdfAnnotationBorder(0.0)
# 将注释添加到页面
page.Annotations.Add(fileLinkAnnotation)
 
# 保存生成的PDF文件
doc.SaveToFile("外部文件链接.pdf")
doc.Close()

Python给PDF中现有文本添加超链接

通过给PDF中的现有文本添加超链接,可以将文中的特定词汇或短语转化为可点击的链接来指向网页、文档的内部位置或其他外部文件。

要给PDF中的现有文本添加超链接,需要先使用PdfTextFinder类在PDF页面上找到该文本,定位到其所在位置,然后使用PdfUriAnnotation类为其添加超链接。下面是具体实现代码:

from spire.pdf.common import *
from spire.pdf import *
 
# 打开PDF文档
doc = PdfDocument()
doc.LoadFromFile("什么是Adobe Acrobat.pdf")
 
# 标记注释是否已添加
annotation_added = False
 
# 遍历文档中的所有页面
for i in range(doc.Pages.Count):
    if annotation_added:
        break
    # 获取当前页面
    page = doc.Pages[i]
    # 创建PdfTextFinder对象
    finder = PdfTextFinder(page)
    # 查找所需文本
    textFragments = finder.Find("Adobe")
    if textFragments:
        # 获取第一个实例
        textFragment = textFragments[0]
        # 在第一个实例所在位置创建URL注释
        uriAnnotation = PdfUriAnnotation(textFragment.Bounds[0])
        # 设置注释URL
        uriAnnotation.Uri = "https://www.adobe.com/"
        # 设置注释边框
        uriAnnotation.Border = PdfAnnotationBorder(1.0)
        # 设置注释边框颜色
        uriAnnotation.Color = PdfRGBColor(Color.get_Red())
        # 将注释添加到文本存在的页面
        page.Annotations.Add(uriAnnotation)
        annotation_added = True
 
# 保存生成的PDF文件
doc.SaveToFile("给现有文本添加注释.pdf")
doc.Close()

Python在PDF中插入带超链接的图片

在PDF中插入带有超链接的图片,能够为用户提供更加直观的点击体验。无论是指向网页还是外部文件,这种视觉化的超链接形式,能有效吸引用户注意,并提供更丰富的交互功能。

除了可以给文本添加超链接以外,PdfUriAnnotation类也可用于为PDF中的图片添加超链接。下面是具体实现代码:

from spire.pdf.common import *
from spire.pdf import *
 
# 创建PDF文档
doc = PdfDocument()
 
# 添加页面
page = doc.Pages.Add()
 
# 打开图片
image = PdfImage.FromFile("C:/Users/Administrator/Downloads/Python.png")
# 创建矩形
rectangle = RectangleF(PointF(20.0, 50.0), SizeF(float(image.Width), float(image.Height)))
# 在页面上的矩形区域内绘制图片
page.Canvas.DrawImage(image, rectangle)
 
# 在图片所在位置创建URL注释
uriAnnotation = PdfUriAnnotation(rectangle)
# 设置注释URL
uriAnnotation.Uri = "https://www.python.org/"
# 设置注释边框
uriAnnotation.Border = PdfAnnotationBorder(0.0)
# 将注释添加到页面
page.Annotations.Add(uriAnnotation)
 
# 保存生成的PDF文件
doc.SaveToFile("插入带超链接的图片.pdf")
doc.Close()

Python给PDF中现有图片添加超链接

除了插入带有超链接的图片,还可以在现有的PDF图片上添加超链接。这样,用户点击图片时将直接跳转到设定的网页或其他文件,大大提升了PDF文档的可用性和交互体验。

要给PDF中的现有图片添加超链接,首先需要定位到该图片所在位置,然后使用PdfUriAnnotation类为其添加超链接。下面是具体实现代码:

from spire.pdf.common import *
from spire.pdf import *
 
# 打开PDF文档
doc = PdfDocument()
doc.LoadFromFile("什么是Adobe Acrobat.pdf")
 
# 获取第一页
page = doc.Pages[0]
 
# 创建PdfImageHelper对象
imageHelper = PdfImageHelper()
 
# 在页面上查找图片
imageList = imageHelper.GetImagesInfo(page)
if imageList:
    # 获取第一个图片
    image = imageList[0]
    # 在图片所在位置创建URL注释
    uriAnnotation = PdfUriAnnotation(image.Bounds)
    # 设置注释URL
    uriAnnotation.Uri = "https://www.adobe.com/"
    # 设置注释边框
    uriAnnotation.Border = PdfAnnotationBorder(0.0)
    # 将注释添加到页面
    page.Annotations.Add(uriAnnotation)
 
# 保存生成的PDF文件
doc.SaveToFile("给现有图片添加超链接.pdf")
doc.Close()

到此这篇关于使用Python给PDF添加文本超链接和图片超链接的文章就介绍到这了,更多相关Python PDF添加超链接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 二维数组90度旋转的方法

    python 二维数组90度旋转的方法

    今天小编就为大家分享一篇python 二维数组90度旋转的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python实现四舍五入的两个方法总结

    Python实现四舍五入的两个方法总结

    这篇文章主要介绍了python中实现四舍五入的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • Python可视化库之HoloViews的使用教程

    Python可视化库之HoloViews的使用教程

    本文主要为大家介绍了Python中一个优秀的可视化库—HoloViews,不仅能实现一些常见的统计图表绘制,而且其还拥有Matplotlib、Seaborn等库所不具备的交互效果,快跟随小编一起了解一下吧
    2022-02-02
  • python实现canny边缘检测

    python实现canny边缘检测

    本文主要讲解了canny边缘检测原理:计算梯度幅值和方向、根据角度对幅值进行非极大值抑制、用双阈值算法检测和连接边缘以及python 实现
    2020-09-09
  • 分析机器学习之决策树Python实现

    分析机器学习之决策树Python实现

    决策树是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树算法容易理解,适用各种数据,在解决各种问题时都有良好表现
    2021-06-06
  • Keras 实现加载预训练模型并冻结网络的层

    Keras 实现加载预训练模型并冻结网络的层

    这篇文章主要介绍了Keras 实现加载预训练模型并冻结网络的层,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • django框架使用方法详解

    django框架使用方法详解

    这篇文章主要介绍了django框架使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 使用Python 文件读取的多种方式(四种方式)

    使用Python 文件读取的多种方式(四种方式)

    这篇文章主要介绍了Python 文件读取的4种方式,主要有直接打开就读方式,用read()打开,用readines()以及用readline()方式,每种方式通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • 通过Pandas读取大文件的实例

    通过Pandas读取大文件的实例

    今天小编就为大家分享一篇通过Pandas读取大文件的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 基于python实现cdn日志文件导入mysql进行分析

    基于python实现cdn日志文件导入mysql进行分析

    这篇文章主要介绍了基于python实现cdn日志文件导入mysql进行分析,本文以阿里云CDN日志作为辅助查询数据展开主题内容,其它云平台大同小异,需要的小伙伴可以参考一下
    2022-05-05

最新评论