使用C#代码更改或删除 PDF 中的超链接

PDF 文档中的超链接可以帮助用户快速跳转到指定页面或打开相关文档,让 PDF 文件更加便捷、易用。但如果链接目标发生变化,或者链接指向了错误的页面,就可能给文档使用者带来困扰或误解。

因此,及时修改或删除 PDF 文档中的错误或无效超链接,对于确保链接的准确性和可用性非常重要,也能为用户提供更好的阅读体验。本文将介绍如何通过 .NET 程序更改或删除 PDF 文档中的超链接。

安装 PDF 处理库

首先,需要将 PDF 处理库中的 DLL 文件添加为 .NET 项目的引用。相关 DLL 文件可以从官方站点下载,也可以通过 NuGet 进行安装。

cs 复制代码
PM> Install-Package Spire.PDF

更改 PDF 中超链接的 URL

要更改 PDF 页面中超链接的 URL,需要从页面的注释集合中获取超链接注释,将其转换为 PdfLinkAnnotation 对象,然后通过其 PdfURIAction 操作的 URI 属性重新设置 URL。具体步骤如下:

  • 创建一个 PdfDocument 类的对象。
  • 使用 PdfDocument.LoadFromFIle() 方法加载 PDF 文件。
  • 使用 PdfDocument.Pages\[\] 属性获取文档的第一页。
  • 使用 PdfPageBase.AnnotationsV2\[\] 属性获取页面中的第一个超链接注释,并将其转换为 PdfLinkAnnotation 对象。
  • 通过 PdfLinkAnnotation 对象的 PdfURIAction 操作中的 URI 属性重新设置超链接的 URL。
  • 使用 PdfDocument.SaveToFile() 方法保存文档。

完整示例代码如下:

cs 复制代码
using Spire.Pdf;
using Spire.Pdf.Annotations;
using System;

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];

            // 获取第一个超链接
            PdfUriAnnotationWidget url = (PdfUriAnnotationWidget)page.Annotations[0];

            // 重新设置超链接的 URL
            url.Uri = "https://en.wikipedia.org/wiki/Climate_change";

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

从 PDF 中删除超链接

PDF 处理库提供了 PdfPageBase.AnnotationsV2.RemoveAt() 方法,可以根据索引删除 PDF 页面中的指定超链接。

如果需要删除 PDF 文档中的所有超链接,则需要遍历文档中的各个页面,获取每个页面的注释集合,检查注释是否为 PdfLinkAnnotation 类的实例,如果是,则将其删除。具体步骤如下:

  • 创建一个 PdfDocument 类的对象。

  • 使用 PdfDocument.LoadFromFIle() 方法加载 PDF 文档。

  • 如果需要删除指定的超链接,获取包含该超链接的页面,并使用 PdfPageBase.AnnotationsV2.RemoveAt() 方法根据索引删除该超链接。

  • 如果需要删除所有超链接,遍历文档中的各个页面,并通过 PdfPageBase.AnnotationsV2 属性获取每个页面的注释集合。

  • 检查注释是否为 PdfLinkAnnotation 类的实例。如果是,则使用 PdfAnnotationCollection.Remove(PdfLinkAnnotation) 方法删除该注释。

  • 使用 PdfDocument.SaveToFIle() 方法保存文档。

完整示例代码如下:

cs 复制代码
// 示例 1:更改 PDF 中超链接的 URL
using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Interactive.Annotations;

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];

            // 获取第一个超链接
            PdfLinkAnnotation url = page.AnnotationsV2[0] as PdfLinkAnnotation;

            // 重新设置超链接的 URL
            (url.Action as PdfURIAction).URI = "https://en.wikipedia.org/wiki/Climate_change";

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

// 示例 2:删除 PDF 中的超链接
using Spire.Pdf;
using Spire.Pdf.Interactive.Annotations;

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

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

            // 删除第一页中的第二个超链接
            //PdfPageBase page = pdf.Pages[0];
            //page.AnnotationsV2.RemoveAt(1);

            // 删除文档中的所有超链接
            // 遍历文档中的各个页面
            foreach (PdfPageBase page in pdf.Pages)
            {
                // 获取页面的注释集合
                PdfAnnotationCollection collection = page.AnnotationsV2;
                for (int i = collection.Count - 1; i >= 0; i--)
                {
                    PdfAnnotation annotation = collection[i];
                    // 检查注释是否为 PdfLinkAnnotation 的实例
                    if (annotation is PdfLinkAnnotation)
                    {
                        PdfLinkAnnotation url = (PdfLinkAnnotation)annotation;
                        // 删除超链接
                        collection.Remove(url);
                    }
                }
            }

            // 保存文档
            pdf.SaveToFile("DeleteHyperlink.pdf");
            pdf.Dispose();
        }
    }
}

总结

本文介绍了如何使用 C# 和 .NET 程序修改或删除 PDF 文档中的超链接。通过获取 PDF 页面中的超链接注释,可以重新设置超链接的 URL;如果需要删除超链接,则可以根据索引删除指定链接,或遍历文档中的页面和注释集合,批量删除所有超链接。

这种方法适用于维护 PDF 文档中的链接内容,帮助及时更新失效或错误的链接,并保持文档的准确性和可用性。

相关推荐
凤山老林16 小时前
Spring Boot 集成 iText 7 实现动态 PDF 生成与电子签章:合同、报表场景实战
spring boot·后端·pdf·itext7·电子签章
泡海椒16 小时前
趋势分析报表:jquick-pdf折线图PDF生成实战
java·大数据·运维·服务器·前端·pdf
泡海椒18 小时前
金融报表开发:jquick-pdf K 线图 PDF 可视化解决方案
java·开发语言·金融·pdf
泡海椒19 小时前
多维数据分析:jquick-pdf 热力图、雷达图 PDF 实战
数据挖掘·数据分析·pdf
程序员的账号21 小时前
《深度学习入门2自制框架》中文PDF+源代码+斋藤康毅
人工智能·深度学习·pdf
web打印社区21 小时前
远程打印:WebSocket 与 HTTP 轮询怎么选
前端·vue.js·websocket·网络协议·http·electron·pdf
SamChan901 天前
PDF翻译时页眉页脚总在捣乱?跨页重复文本块的检测与过滤实测
人工智能·python·ai·pdf·wpf
一马平川的大草原1 天前
pdf转md的三种方式
pdf·ocr·md
zhoupenghui1681 天前
复杂PDF与扫描件解析存储实战:文本、图片OCR、表格识别及RAG向量入库全流程
pdf·ocr·复杂pdf解析