Python 在PDF中插入文本超链接和图片超链接 (详解)

news2024/9/27 7:57:25

目录

使用工具

Python给PDF添加网页链接

Python给PDF添加内部文件链接

Python给PDF添加外部文件链接

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

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

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


超链接是指向特定资源(如外部网页、文档内部位置或其他外部文件)的链接。作为一种有效的导航工具,它能够帮助读者快速访问相关信息。通过在PDF文档中添加文本超链接和图片超链接,你可以显著提升文档的互动性和用户体验。这篇文章将详细介绍如何使用Python给PDF添加文本超链接和图片超链接,包括以下内容:

  • Python给PDF添加网页链接
  • Python给PDF添加内部文件链接
  • Python给PDF添加外部文件链接
  • Python给PDF中现有文本添加超链接
  • Python在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

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的其他页面

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

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现有文本添加超链接

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

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中添加网页链接、内部/外部文件链接,以及为图片添加超链接的全部内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2164023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android个性名片界面的设计——约束布局的应用

节选自《Android应用开发项目式教程》,机械工业出版社,2024年7月出版 做最简单的安卓入门教程,手把手视频、代码、答疑全配齐 【任务目标】 使用约束布局、TextView控件实现一个个性名片界面的设计,界面如图1所示。 图1 个性名片…

跟王道学c记录

scanf int a; scanf("%d",&a); 一定要有取地址符 printf 用%f精度修饰符指定想要的小数位数。例如,%5.2f会至少显示5位数字并带有2位小 数的浮点数 用%s精度修饰符简单地表示一个最大的长度,以补充句点前的最小字段长度 printf 数的所有输出都是右对齐的,除非…

C++的哲学思想

C的哲学思想 文章目录 C的哲学思想💡前言💡C的哲学思想☁️C底层不应该基于任何其他语言(汇编语言除外)☁️只为使用的东西付费(不需要为没有使用到的语言特性付费)☁️以低成本提供高级抽象(更…

exBase

1.准备工作 1.端口配置 下列为默认端口号,若部分端口号已被占用,用户可以根据实际情况进行修改。 端口号 说明 31030 exBase默认端口 31003 配置库默认端口 2181 zookeeper默认端口 9092 kafka默认端口 8091 metaNode的RPC端口 8092 node…

【Linux】进程管理:从理论到实践(一)

🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一: 🔥 进程的基本概念 二: 🔥 描述进程-PCB三: 🔥 查看进程 🥝 通过系统目录🥝 通过ps命…

小程序视频编辑SDK解决方案,轻量化视频制作解决方案

面对小程序、网页、HTML5等多样化平台,如何轻松实现视频编辑的轻量化与高效化,成为了众多开发者和内容创作者共同面临的挑战。正是洞察到这一市场需求,美摄科技推出了其领先的小程序视频编辑SDK解决方案,为创意插上翅膀&#xff0…

线性代数(持续更新)

一.矩阵及其计算 1.矩阵的概念 矩阵就是一个数表 元素全是0,是零矩阵,用0来表示 当mn时,称为n阶矩阵(方阵) 只有一行的叫行矩阵,只有一列的叫列矩阵 只有对角线有元素的叫做对角矩阵,用dia…

FTP被动模式配置

FTP被动模式配置 非云服务器或未开启防火墙的服务器不需要设置 背景: 某些FTP客户端与FTP服务器进行数据交互时,客户端数据传输使用的是被动模式; 被动模式会导致服务端的数据通道端口随机变动,服务器的防火墙无法设置放行规则…

Excel数据检视——对角线连续数据连线

实例需求:数据表如下图所示,现需要根据规则,在符合要求的单元格上,添加连线。 连续单元格位于对角线方向单元格内容相同连续单元格数量不少于7个 示例代码如下。 Sub LT2RB()Dim objDic As Object, rngData As Range, bFlag As …

基于springBoot校园健康驿站管理平台(源码+教程)

互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱,出错率高,信息安全性差,劳…

开源标注工具

DoTAT https://github.com/FXLP/MarkTool 后端代码未开放,可能有数据泄露风险 Chinese-Annotator https://github.com/deepwel/Chinese-Annotator 安装非常麻烦,github更新频率比较低,支持功能和doccano类似 IEPY https://github.com/ma…

头戴式蓝牙无线耳机哪个牌子比较好?头戴式蓝牙耳机排行榜盘点

在当今快节奏的生活中,音乐已成为我们不可或缺的精神食粮,而一款优秀的头戴式蓝牙无线耳机,不仅能为我们带来高品质的音频享受,还能让我们在繁忙的生活中找到片刻的宁静与放松,那么头戴式蓝牙无线耳机哪个牌子比较好&a…

【工具变量】数字技术应用广度与深度数据集(2001-2023年)

数据简介:数字技术应用广度是指企业为了实现收集、存储与处理海量数据时所需要的技术支撑,诸如大数据、云计算、区块链等等。数字技术应用深度包括数字化管理和数字化生产。其中,数字化管理是指企业应用数字技术实现组织、生产、销售和服务智…

Unreal Engine 5 C++: Asset Batch Duplication插件编写02

目录 准备工作 "Scripting library" 三个最重要的功能(前两个是UEditorUtilityLibrary中的) 自动创建声明: TArray T 的含义 F 的含义 Live Coding (Ctrlalt F11) Live Coding 的工作流程&#xff…

uni-app - - - - - 实现锚点定位和滚动监听功能(滚动监听功能暂未添加,待后续更新)

实现锚点定位和滚动监听功能 1. 思路解析2. 代码示例 效果截图示例: 点击左侧menu,右侧列表数据实现锚点定位 1. 思路解析 点击左侧按钮,更新右侧scroll-view对应的scroll-into-view的值,即可实现右侧锚点定位滚动右侧区域&am…

攻防世界--->robots

学习笔记。 robots: 得,就是隐藏某些东西呗。 - - 好吧,还是不会。 参考: 攻防世界——新手区——robots_robots flag-CSDN博客https://blog.csdn.net/weixin_45864041/article/details/108036234 突破点: so&#…

u-navber自定义导航栏搜索框

效果 代码 <template><view><u-navbar :is-back"false"><view class"navbar"><view class"search"><image src"../../static/my_device/search_icon.png" class"search_image"></i…

代码随想录算法day40 | 动态规划算法part13 | 647. 回文子串,516.最长回文子序列

647. 回文子串 动态规划解决的经典题目&#xff0c;如果没接触过的话&#xff0c;别硬想 直接看题解。 力扣题目链接(opens new window) 给定一个字符串&#xff0c;你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的…

箱包发霉怎么清洁霉斑 工厂箱包发霉翻箱处理方法

箱包是我们日常生活中的必备品&#xff0c;随着箱包工厂订单不断&#xff0c;但工厂最头疼的就是会经常遇到批量的箱包出现发霉的问题。一旦发霉&#xff0c;并要面临一笔巨额索赔问题&#xff0c;尤其出口到国外发霉了&#xff0c;经ihaoer防霉人士介绍一种简单有效的方法&…

apple developer 开发者账号被停用,提示Locked,终于解决了

事情是这样的&#xff0c;9.11我们要发布app的时候&#xff0c;一直登录不上。然后联系了苹果客服&#xff0c;告知账号不活跃。于是让我们通过活跃申请、以及重置密码申请操作来解决。 然后&#xff0c;操作一遍又一遍&#xff0c;都解决不了。 后来联系可国外的客服&#…