C#代码实现将超链接插入到PDF的现有文本中

 更新时间:2026年02月05日 08:33:57   作者:2501_93070778  
PDF 中的超链接是一项非常实用的功能,能够让读者快速、便捷地访问指定的网页,本文将介绍如何使用 Spire.PDF for .NET为 PDF 文档中的现有文本添加超链接,感兴趣的小伙伴可以了解下

PDF 中的超链接是一项非常实用的功能,能够让读者快速、便捷地访问指定的网页。通过在 PDF 文档中添加超链接,可以为读者提供更多补充信息,或引导他们前往相关的参考资源。当读者点击超链接时,对应的网页会立即在浏览器中打开。

本文将介绍如何使用 Spire.PDF for .NET,通过 .NET 程序为 PDF 文档中的现有文本添加超链接。

安装 Spire.PDF for .NET

首先,需要将 Spire.PDF for .NET 包中包含的 DLL 文件添加为 .NET 项目的引用。这些 DLL 文件可以通过链接直接下载,也可以通过 NuGet 进行安装。

PM> Install-Package Spire.PDF

使用 C#/VB.NET 在 PDF 现有文本上插入超链接

在 PDF 文档中,超链接是以**注释(Annotation)**的形式添加到页面上的。要在 PDF 的已有文本上插入超链接,首先需要定位目标文本;获取其所在位置后,即可创建一个包含链接的 PdfUriAnnotation 对象,并将其添加到对应位置。具体步骤如下:

  • 创建 PdfDocument 对象,并使用 PdfDocument.LoadFromFile() 方法加载 PDF 文件。
  • 通过 PdfDocument.Pages 属性获取第一页。
  • 创建 PdfTextFinder 对象,并通过 PdfTextFinder.Options.Parameter 属性设置查找选项。
  • 使用 PdfTextFinder.Find() 方法在页面中查找指定文本,并获取其第三次出现的位置。
  • 遍历该文本出现位置的文本边界(由于被搜索的文本可能跨越多行,且可能包含多个边界,查找到的文本边界会以列表形式返回,以适应这种情况)。
  • 在对应的文本边界内创建 PdfUriAnnotation 对象,并通过其属性设置链接地址、边框样式和边框颜色。
  • 使用 PdfPageBase.AnnotationsWidget.Add(PdfUriAnnotation) 方法将超链接添加到页面注释中。
  • 调用 PdfDocument.SaveToFile() 方法保存 PDF 文件。

具体示例代码如下:

using Spire.Pdf;
using Spire.Pdf.Annotations;
using Spire.Pdf.Texts;
using System.Collections.Generic;
using System.Drawing;
using TextFindParameter = Spire.Pdf.Texts.TextFindParameter;

namespace ChangeHyperlink
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建 PdfDocument 类的对象
            PdfDocument pdf = new PdfDocument();

            // 加载 PDF 文件
            pdf.LoadFromFile("Sample.pdf");

            // 获取第一页
            PdfPageBase page = pdf.Pages[0];

            // 创建 PdfTextFinder 对象并设置查找选项
            PdfTextFinder finder = new PdfTextFinder(page);
            finder.Options.Parameter = TextFindParameter.IgnoreCase;

            // 在页面中查找指定文本,并获取第三次出现的位置
            List<PdfTextFragment> collection = finder.Find("climate change");
            PdfTextFragment fragment = collection[2];

            // 遍历该文本出现位置的所有文本边界
            foreach (RectangleF bounds in fragment.Bounds)
            {
                // 创建一个超链接注释
                PdfUriAnnotation url = new PdfUriAnnotation(bounds);
                // 设置超链接的 URL
                url.Uri = "https://en.wikipedia.org/wiki/Climate_change";
                // 设置超链接注释的边框
                url.Border = new PdfAnnotationBorder(1f);
                // 设置边框颜色
                url.Color = Color.Blue;
                // 将超链接注释添加到页面中
                page.Annotations.Add(url);
            }

            // 保存 PDF 文件
            pdf.SaveToFile("AddHyperlinks.pdf");
            pdf.Dispose();
        }
    }
}

方法补充

C#插入超链接到PDF文档的三种方法

1.链接到外部网页

//创建PDF文档并添加一页
PdfDocument pdf = new PdfDocument();
PdfPageBase page =pdf.Pages.Add();
 
//定义坐标变量并赋初值
float x = 10;
float y = 50;
 
//创建字体
PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular), true);
//添加文本到页面
string text = "更多详情请访问E-iceblue官方网站:  ";
page.Canvas.DrawString(text, font1, PdfBrushes.Black, newPointF(x, y));
 
PdfStringFormat format = new PdfStringFormat();
format.MeasureTrailingSpaces = true;           
x = x + font1.MeasureString(text, format).Width;
 
//创建字体
PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Underline), true);
//创建PdfTextWebLink对象
PdfTextWebLink webLink = new PdfTextWebLink();
//设置超链接地址
webLink.Url = "https://www.e-iceblue.cn/";
//设置超链接文本
webLink.Text = "www.e-iceblue.cn";
//设置超链接字体和字体颜色
webLink.Font = font2;
webLink.Brush = PdfBrushes.Blue;
 
//添加超链接到页面
webLink.DrawTextWebLink(page.Canvas, new PointF(x, y));
 
//保存文档
pdf.SaveToFile("WebLink.pdf");

2.链接到文档内部的指定页面

//创建PDF文档并添加两页
PdfDocument pdf = new PdfDocument();
PdfPageBase page1 =pdf.Pages.Add();
PdfPageBase page2 =pdf.Pages.Add();
 
//创建字体
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular), true);
 
//添加文本到页面
page1.Canvas.DrawString("第一页",font, PdfBrushes.Black, new PointF(20,20));
page2.Canvas.DrawString("第二页",font, PdfBrushes.Black, new PointF(20,20));
 
string text = "跳转到第二页"; 
//创建RectangleF对象并添加文本         
RectangleF rectangle = new RectangleF(20,80, 70, 20);
page1.Canvas.DrawString(text, font, PdfBrushes.ForestGreen, rectangle);
 
//创建PdfDocumentLinkAnnotation对象
PdfDocumentLinkAnnotation documentLink = new PdfDocumentLinkAnnotation(rectangle,new PdfDestination(page2));
 
//设置边框颜色           
documentLink.Color = Color.DarkSeaGreen;
 
//添加超链接到第一页
page1.AnnotationsWidget.Add(documentLink);
 
//保存文档
pdf.SaveToFile("InternalFileLink.pdf");

3.链接到外部文档

//创建PDF文档并添加一页
PdfDocument document = new PdfDocument();
PdfPageBase page =document.Pages.Add();
 
//创建字体
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular), true);
 
string text = "打开1.jpg";
//创建RectangleF对象并添加文本
RectangleF rectangle = new RectangleF(20,40, 80, 20);
page.Canvas.DrawString(text, font, PdfBrushes.ForestGreen, rectangle);
           
//创建PdfFileLinkAnnotation对象
PdfFileLinkAnnotation fileLink = new PdfFileLinkAnnotation(rectangle,@"1.jpg");
//设置超链接边框颜色
fileLink.Color = Color.DarkSeaGreen;
 
//添加超链接到页面
page.AnnotationsWidget.Add(fileLink);
 
//保存文档
document.SaveToFile("ExternalFileLink.pdf");

到此这篇关于C#代码实现将超链接插入到PDF的现有文本中的文章就介绍到这了,更多相关C#超链接插入PDF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • RabbitMQ的配置与安装教程全纪录

    RabbitMQ的配置与安装教程全纪录

    这篇文章主要给大家介绍了关于RabbitMQ的配置与安装的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • Visual Studio 中自定义代码片段的方法

    Visual Studio 中自定义代码片段的方法

    这篇文章主要介绍了Visual Studio 中自定义代码片段的方法,本文分步骤通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • C# 参考之访问关键字:base、this

    C# 参考之访问关键字:base、this

    由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有 this 指针。在静态方法中引用 this 是错误的。 索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。
    2008-03-03
  • C#单线程和多线程端口扫描器详解

    C#单线程和多线程端口扫描器详解

    这篇文章主要为大家详细介绍了C#单线程和多线程端口扫描器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • C# 6.0 的知识梳理

    C# 6.0 的知识梳理

    目前最新的版本是C# 7.0,VS的最新版本为Visual Studio 2017 RC,两者都尚未进入正式阶段。C# 6.0虽说出了一段时间,但是似乎有许多人对这一块知识并不了解。本文将对C# 6.0的知识进行梳理,下面跟着小编一起来看下吧
    2016-12-12
  • C#双缓冲实现方法(可防止闪屏)

    C#双缓冲实现方法(可防止闪屏)

    这篇文章主要介绍了C#双缓冲实现方法,结合实例形式分析了C#双缓冲的具体步骤与相关技巧,可实现防止闪屏的功能,需要的朋友可以参考下
    2016-02-02
  • 基于WPF实现时间选择控件

    基于WPF实现时间选择控件

    这篇文章主要介绍了如何基于WPF实现简单的时间选择控件,文中的示例代码讲解详细,对我们的学习或工作有一定帮助,需要的小伙伴可以参考一下
    2023-12-12
  • C#中使用CliWrap让命令行交互举重若轻

    C#中使用CliWrap让命令行交互举重若轻

    这篇文章介绍了C#中使用CliWrap让命令行交互举重若轻,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • C# 二进制序列化和反序列化的具体实现

    C# 二进制序列化和反序列化的具体实现

    本文主要介绍了C# 二进制序列化和反序列化的具体实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • C#字符串内存驻留机制分析

    C#字符串内存驻留机制分析

    这篇文章介绍了C#字符串内存驻留机制,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01

最新评论