Python在PDF中添加或删除超链接的操作

 更新时间:2024年12月15日 09:00:19   作者:Eiceblue  
PDF文件现已成为文档存储和分发的首选格式,然而,PDF文件的静态特性有时会限制其交互性,超链接是提高PDF文件互动性和用户体验的关键元素,本文将详细介绍如何使用第三方库Spire.PDF for Python来进行这些操作,需要的朋友可以参考下

引言

PDF文件现已成为文档存储和分发的首选格式。然而,PDF文件的静态特性有时会限制其交互性。超链接是提高PDF文件互动性和用户体验的关键元素。Python作为一种强大的编程语言,拥有多种库和工具来处理PDF文件,包括添加、删除超链接。本文将详细介绍如何使用第三方库Spire.PDF for Python来进行这些操作。

所需Python库 - Spire.PDF for Python。可以通过下面的pip 命令直接安装:

pip install Spire.Pdf

Python 在PDF文档中添加超链接

Spire.PDF for Python支持在PDF中添加不同类型的超链接:

  • 简单文字链接:直接使用 PdfPageBase.Canvas.DrawString() 方法将其绘制到页面上。
  • 超文本链接、邮箱链接:通过 PdfTextWebLink.DrawTextWebLink() 方法绘制到页面上。
  • 文档链接:通过 PdfPageBase.AnnotationsWidget.Add(PdfFileLinkAnnotation) 方法添加。

Python 代码如下:

from spire.pdf.common import *
from spire.pdf import *

# 创建PDF文档
pdf = PdfDocument()

# 添加页面
page = pdf.Pages.Add()

# 设置初始X和Y坐标
y = 30.0
x = 10.0

# 创建PDF字体
font = PdfTrueTypeFont("宋体", 14.0, PdfFontStyle.Regular, True)
font1 = PdfTrueTypeFont("宋体", 14.0, PdfFontStyle.Underline, True)

# 添加简单文本链接
label = "简单链接: "
format = PdfStringFormat()
format.MeasureTrailingSpaces = True
page.Canvas.DrawString(label, font, PdfBrushes.get_Black(), 0.0, y, format)
x = font.MeasureString(label, format).Width
url = "https://www.e-iceblue.cn"
page.Canvas.DrawString(url, font1, PdfBrushes.get_Blue(), x, y)
y = y + 28

# 添加超文本链接
label = "超文本链接:"
page.Canvas.DrawString(label, font, PdfBrushes.get_Black(), 0.0, y, format)
x = font.MeasureString(label, format).Width
webLink = PdfTextWebLink()
webLink.Text = "主页"
webLink.Url = url
webLink.Font = font1
webLink.Brush = PdfBrushes.get_Blue()
webLink.DrawTextWebLink(page.Canvas, PointF(x, y))
y = y + 28

# 添加邮件链接
label = "邮件链接: "
page.Canvas.DrawString(label, font, PdfBrushes.get_Black(), 0.0, y, format)
x = font.MeasureString(label, format).Width
link = PdfTextWebLink()
link.Text = "联系我们"
link.Url = "mailto:support @e-iceblue.com"
link.Font = font1
link.Brush = PdfBrushes.get_Blue()
link.DrawTextWebLink(page.Canvas, PointF(x, y))
y = y + 28

# 添加文档链接
label = "文档链接: "
page.Canvas.DrawString(label, font, PdfBrushes.get_Black(), 0.0, y, format)
x = font.MeasureString(label, format).Width
text = "点击打开文件"
location = PointF(x, y)
size = font1.MeasureString(text)
linkBounds = RectangleF(location, size)
fileLink = PdfFileLinkAnnotation(linkBounds, "C:\\Users\\Administrator\\Desktop\\排名.xlsx")
fileLink.Border = PdfAnnotationBorder(0.0)
page.AnnotationsWidget.Add(fileLink)
page.Canvas.DrawString(text, font1, PdfBrushes.get_Blue(), x, y)

# 保存PDF文档
pdf.SaveToFile("PDF超链接.pdf")
pdf.Close()

生成文件:

Python 删除PDF 文档中的超链接

如果要将PDF文档中已有的超链接一次性全部删除,可以参考以下步骤:

  1. 通过LoadFromFile()方法加载 PDF 文档。
  2. 循环遍历文档中的页面,并通过 PdfPageBase.AnnotationsWidget 属性获取每个页面上的注释。
  3. 循环遍历所有注释,检查每个注释是否为超链接。
  4. 如果是,则使用 PdfAnnotationCollection.Remove() 方法将其删除。
  5. 使用 PdfDocument.SaveToFile() 方法保存文档。

Python 代码:

from spire.pdf import *
from spire.pdf.common import *

# 加载PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("PDF超链接.pdf")

# 遍历文档中的所有页面
for j in range(pdf.Pages.Count):
    # 获取每一页
    page = pdf.Pages.get_Item(j)
    # 获取每一页上的注释
    annotations = page.AnnotationsWidget
    # 检查注释是否为空
    if annotations.Count > 0:
        # 遍历所有注释
        i = annotations.Count - 1
        while i >=0:
            # 获取注释
            annotation = annotations.get_Item(i)
            # 检查注释是否为超链接
            if isinstance(annotation, PdfTextWebLinkAnnotationWidget):
                # 删除超链接
                annotations.Remove(annotation)
            i -= 1

# 保存PDF文档
pdf.SaveToFile("删除PDF超链接.pdf")
pdf.Close()

如果仅需删除PDF某一页中的指定超链接,可以参考 以下代码:

# 删除第一页中的第一个超链接
page = pdf.Pages.get_Item(0)
page.AnnotationsWidget.RemoveAt(0)

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

相关文章

  • 关于Numpy中argsort()函数的用法解读

    关于Numpy中argsort()函数的用法解读

    这篇文章主要介绍了关于Numpy中argsort()函数的用法解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • python怎么创建新文件代码举例

    python怎么创建新文件代码举例

    Python创建新文件有多种方法,包括使用open函数、with语句和Pathlib模块,这篇文章主要给大家介绍了关于python怎么创建新文件的相关资料,需要的朋友可以参考下
    2023-12-12
  • Caffe卷积神经网络视觉层Vision Layers及参数详解

    Caffe卷积神经网络视觉层Vision Layers及参数详解

    这篇文章主要为大家介绍了Caffe卷积神经网络视觉层Vision Layers及参数详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)

    PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)

    这篇文章主要介绍了PyCharm 2020.1版安装破解注册码永久激活(激活到2089年),需要的朋友可以参考下
    2020-09-09
  • Python3 完全平方数案例

    Python3 完全平方数案例

    这篇文章主要介绍了Python3 完全平方数的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python中json文件的读取实现

    Python中json文件的读取实现

    在许多编程语言中,都有内置的JSON解析器和生成器,可以方便地处理JSON数据,本文主要介绍了Python中json文件的读取实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • django vue3实现大文件分段续传(断点续传)

    django vue3实现大文件分段续传(断点续传)

    本文介绍了使用Django和Vue3实现大文件分段上传(断点续传)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • Python 通过xpath属性爬取豆瓣热映的电影信息

    Python 通过xpath属性爬取豆瓣热映的电影信息

    我喜欢看电影,可以说大部分热门电影我都看过。处理爱好的目的,我看了看豆瓣热映的电影列表。于是我写了这个爬虫把豆瓣热映的电影都爬了下来。对页面的处理主要是需要点击显示全部电影,然后爬取影片属性,最后输出文本。采用的还是scrapy框架。顺便聊聊我的实现过程吧
    2021-11-11
  • Python数值方法及数据可视化

    Python数值方法及数据可视化

    这篇文章主要介绍了Python数值方法及数据可视化,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • python实现将英文单词表示的数字转换成阿拉伯数字的方法

    python实现将英文单词表示的数字转换成阿拉伯数字的方法

    这篇文章主要介绍了python实现将英文单词表示的数字转换成阿拉伯数字的方法,涉及Python字符串转换操作的相关技巧,需要的朋友可以参考下
    2015-07-07

最新评论