通过 Python 在PDF中添加、或删除超链接
PDF文件现已成为文档存储和分发的首选格式。然而,PDF文件的静态特性有时会限制其交互性。超链接是提高PDF文件互动性和用户体验的关键元素。Python作为一种强大的编程语言,拥有多种库和工具来处理PDF文件,包括添加、删除超链接。本文将详细介绍如何使用第三方库Spire.PDF for Python来进行这些操作。
- Python 在PDF文档中添加超链接
- Python 删除PDF 文档中的超链接
所需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文档中已有的超链接一次性全部删除,可以参考以下步骤:
- 通过 LoadFromFile() 方法加载 PDF 文档。
- 循环遍历文档中的页面,并通过 PdfPageBase.AnnotationsWidget 属性获取每个页面上的注释。
- 循环遍历所有注释,检查每个注释是否为超链接。
- 如果是,则使用 PdfAnnotationCollection.Remove() 方法将其删除。
- 使用 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)
---------------------------------------------------------------------------------------------------------------------
生成文档中的红色水印,可以通过点击以下链接,申请一个月免费授权来去除并完整试用:
https://www.e-iceblue.cn/misc/temporary-license.html
通过 Python 在PDF中添加、或删除超链接的更多相关文章
- JavaScript向select下拉框中添加和删除元素
JavaScript向select下拉框中添加和删除元素 1.说明 a 利用append()方法向下拉框中添加元素 b 利用remove()方法移除下拉框中最后一个元素 2.设计源码 < ...
- Java 在PDF 中添加超链接
对特定元素添加超链接后,用户可以通过点击被链接的元素来激活这些链接,通常在被链接的元素下带有下划线或者以不同的颜色显示来进行区分.按照使用对象的不同,链接又可以分为:文本超链接,图像超链接,E-mai ...
- 对List遍历过程中添加和删除的思考
对List遍历过程中添加和删除的思考 平时开发过程中,不少开发者都遇到过一个问题:在遍历集合的的过程中,进行add或者remove操作的时候,会出现2类错误,包括:java.util.Concurre ...
- Python 日志输出中添加上下文信息
Python日志输出中添加上下文信息 除了传递给日志记录函数的参数(如msg)外,有时候我们还想在日志输出中包含一些额外的上下文信息.比如,在一个网络应用中,可能希望在日志中记录客户端的特定信息,如: ...
- C# 在PDF中添加墨迹注释Ink Annotation
PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状:该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线.下面,通过C#程序代码介绍如何 ...
- Python 分发包中添加额外文件【新手必学】
在制作一个 Python 分发包时经常需要把一些文件添加到包中.最常见的例子是你希望通过 pip install命令安装 Python 包时会在 /etc/ 等目录下自动添加默认配置文件,由此可以 ...
- 怎样Zbrush 4R7中添加和删除SubTool
添加或删除SubTool在ZBrush®软件中是非常简单易操作的,通常在用SubTool面板已经给我们提供了相应的命令来对其进行操作,它能够将一个或多个格式为ZTL的文件同时添加进SubTool里. ...
- MySql中添加用户/删除用户
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 ...
- Java 在PDF中添加页面跳转按钮
在PDF 中可通过按钮来添加动作跳转到指定页面,包括跳转到文档首页.文档末页.跳转到上一页.下一页.或跳转到指定页面等.下面将通过java代码来演示如何添加具有以上几种功能的按钮. 使用工具: Fre ...
- MySQL中添加、删除约束
MySQL中6种常见的约束:主键约束(primary key).外键约束(foreign key).非空约束(not null).唯一性约束(unique).默认值约束(defualt).自增约束(a ...
随机推荐
- h5按需引入Vant
下载按需引入插件(推荐) babel-plugin-import 是一款 babel 插件, 它会在编译过程中将 import 的写法自动转换为按需引入的方式 # 安装插件 npm i babel-p ...
- 在阿里云ECS上一键部署DeepSeek-R1
DeepSeek-R1 是一款开源模型,也提供了 API(接口)调用方式.据 DeepSeek介绍,DeepSeek-R1 后训练阶段大规模使用了强化学习技术,在只有极少标注数据的情况下提升了模型推理 ...
- GIT如何进行团队协作
加入其他开发成员.修改代码并提交 选择库点击管理 点击添加成员邀请用户 以下三种方式都行 加入后如下 第二人如何进行修改文件: 在文件夹中创建本地库git init 建立远程连接 git remote ...
- 嵌入式linux下的FTP服务器配置记录
嵌入式linux FTP服务器 一般嵌入式Linux下的FTP服务器会有什么要求呢?一般来说差不多如下所示 账号认证,需要特定用户才能访问(不一定要和登录用户挂钩) 根目录固定在一个固定的位置,且不能 ...
- 天线增益是什么意思?DBI越大越好吗?
作者: 技象物联网/ 行业百科 / 无线通信, 通信系统 / 2023年6月23日 11:58:21 天线增益是指天线在某个方向上相对于一个理想点源天线所辐射的功率密度的增益.换句话说,天线增益是天线 ...
- captura怎样解决FFmpeg解析错误问题
captura怎样解决FFmpeg解析错误问题?captura软件里大家在进行屏幕录制的工作得时候都会用到captura软件,软件得功能可以满足大家的需求,可以轻松的录制屏幕,进行屏幕截屏等,但是又小 ...
- 记一次Microsoft.Toolkit.Mvvm(MVVM Toolkit)的兼容性问题
今天在目标框架为framework4.6.1的wpf项目中使用Microsoft.Toolkit.Mvvm7.1.1出现了一个比较怪异的编译时错误,前提是打开了 工具>选项>环境>预 ...
- Jsoncpp的安装与使用方式
JsonCpp 是一个C++库,用于解析和生成JSON数据.它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式. 安装Jsoncpp 我们可以输入以下命令安装jsoncp ...
- MySQL时间溢出原理、实战影响与全面解决方案
一.问题背景与现象复现 操作场景: 本文将手把手带您了解mysql时间溢出原理.实战影响与全面解决方案,所有代码均通过dblens for mysql数据库工具验证,推荐使用该工具进行可视化数据库管理 ...
- HTTP Runner 运行提示执行后提示找不到有效的测试用例怎么解决?
确保yaml文件编写正确 2.yaml文件名称test_xxx.yaml test开头 3.更改httprunner 版本号 pip install httprunner==1.4.2