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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#解决多IfElse判断语句和Switch语句问题的方法分享

    C#解决多IfElse判断语句和Switch语句问题的方法分享

    这篇文章主要为大家介绍C#如何使用设计模式中的策略模式和委托来解决多个IfElse判断语句和Switch语句,这种替换方式在其他语言也一样可以做到,感兴趣的可以了解一下
    2022-12-12
  • C#窗体通讯录系统的示例代码

    C#窗体通讯录系统的示例代码

    本文主要介绍了C#窗体通讯录系统的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • C# 泛型List排序的实现

    C# 泛型List排序的实现

    本文主要介绍了C# 泛型List排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • C#9.0中init访问器的实现

    C#9.0中init访问器的实现

    本文主要介绍了C#9.0中init访问器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • 在C#中调用Windows防火墙界面的常见方式

    在C#中调用Windows防火墙界面的常见方式

    在 C# 中调用 Windows 防火墙界面(基础设置或高级安全设置),可以使用 进程启动(Process.Start) 或 Win32 API 来实现,所以本文给大家介绍了C#调用Windows防火墙界面的常见方式,需要的朋友可以参考下
    2025-11-11
  • C#使用Thrift作为RPC框架入门详细教程

    C#使用Thrift作为RPC框架入门详细教程

    这篇文件我们讲了从0到1使用thrift框架的方法,也讲了一些该框架的基本知识,本文将详细介绍 Thrift 在C#语言下的使用方式,并且提供丰富的实例代码加以解释说明,帮助使用者快速构建服务,感兴趣的朋友一起看看吧
    2021-11-11
  • 详细聊聊C#的并发机制优秀在哪

    详细聊聊C#的并发机制优秀在哪

    并发其实是一个很泛的概念,字面意思就是"同时做多件事",不过方式有所不同,下面这篇文章主要给大家介绍了关于C#并发机制的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • C#使用iTextSharp设置PDF所有页面背景图功能实例

    C#使用iTextSharp设置PDF所有页面背景图功能实例

    这篇文章主要介绍了C#使用iTextSharp设置PDF所有页面背景图功能,实例分析了C#使用iTextSharp设置PDF页面背景图的实现方法,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • C# 8.0新特性介绍

    C# 8.0新特性介绍

    C# 语言是在2000发布的,至今已正式发布了7个版本,每个版本都包含了许多令人兴奋的新特性和功能更新。下面通过本文给大家分享下C# 8.0的三个令人兴奋的新特性,需要的朋友参考下吧
    2017-10-10
  • C# winform自定义翻页控件详解

    C# winform自定义翻页控件详解

    这篇文章主要为大家详细介绍了C# winform自定义翻页控件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09

最新评论