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 页面上超链接的 URL 时,需要先获取超链接注释,然后使用 PdfTextWebLinkAnnotationWidget.Url 属性来重新设置 URL。详细操作步骤如下:
- 创建一个 PdfDocument 的对象。
- 使用 PdfDocument.LoadFromFIle() 方法载入 PDF 文件。
- 使用 PdfDocument.Pages[] 属性获取文档的第一页。
- 使用 PdfPageBase.AnnotationsWidget[] 属性获取页面上的第一个超链接部件。
- 使用 PdfUriAnnotationWidget.Uri 属性重新设置超链接的 URL。
- 使用 PdfDocument.SaveToFile() 方法保存文档。
- C#
- VB.NET
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("示例.pdf");
//获取第一页
PdfPageBase page = pdf.Pages[0];
//获取第一个超链接
PdfUriAnnotationWidget url = (PdfUriAnnotationWidget)page.AnnotationsWidget[0];
//重新设置该超链接的URL
url.Uri = "https://www.ccchina.org.cn/";
//保存PDF文件
pdf.SaveToFile("更改超链接.pdf");
pdf.Dispose();
}
}
}
Imports Spire.Pdf
Imports Spire.Pdf.Annotations
Imports System
Namespace ChangeHyperlink
Friend Class Program
Shared Sub Main(ByVal args() As String)
'创建PdfDocument的对象
Dim pdf As PdfDocument = New PdfDocument()
'载入PDF文件
pdf.LoadFromFile("示例.pdf")
'获取第一页
Dim page As PdfPageBase = pdf.Pages(0)
'获取第一个超链接
Dim url As PdfUriAnnotationWidget = CType(page.AnnotationsWidget(0), PdfUriAnnotationWidget)
'重新设置该超链接的URL
url.Uri = "https://www.ccchina.org.cn/"
'保存PDF文件
pdf.SaveToFile("更改超链接.pdf")
pdf.Dispose()
End Sub
End Class
End Namespace
C#/VB.NET 删除 PDF 中的超链接
Spire.PDF for .NET 提供的 PdfPageBase.AnnotationsWidget.RemoveAt() 方法可以按其索引删除 PDF 页面上的超链接。而删除一个 PDF 文档中所有的超链接需要循环遍历所有页面以获取每一页的注释,然后判断注释是否是 PdfUriAnnotationWidget 类的实例。如果是,则删除该注释。下面是详细操作步骤:
- 创建一个 PdfDocument 的对象。
- 使用 PdfDocument.LoadFromFIle() 方法载入 PDF 文档。
- 如需删除某个特定的超链接,可以先获取包含该超链接的页面,并使用 PdfPageBase.AnnotationsWidget.RemoveAt() 方法按其索引从页面中删除该超链接。
- 如需删除所有的超链接,则可以循环遍历文档中的所有页面,并使用 PdfPageBase.AnnotationsWidget 属性获取每个页面的注释集合。
- 判断一个注释是否为 PdfUriAnnotationWidget 类的实例。如果是,则使用 PdfAnnotationCollection.Remove(PdfUriAnnotationWidget) 方法删除该注释。
- 使用 PdfDocument.SaveToFIle() 方法保存文档。
- C#
- VB.NET
using Spire.Pdf;
using Spire.Pdf.Annotations;
using System;
using System.Dynamic;
namespace DeleteHyperlink
{
internal class Program
{
static void Main(string[] args)
{
//创建PdfDocument的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文件
pdf.LoadFromFile("示例.pdf");
//删除第一页中的第二个超链接
//PdfPageBase page = pdf.Pages[0];
//page.AnnotationsWidget.RemoveAt(1);
//删除文档中的所有超链接
//循环遍历文档中的页面
foreach (PdfPageBase page in pdf.Pages)
{
//获取一个页面中的注释集合
PdfAnnotationCollection collection = page.AnnotationsWidget;
for (int i = collection.Count - 1; i >= 0; i--)
{
PdfAnnotation annotation = collection[i];
//判断注释是否为PdfUriAnnotationWidget的实例
if (annotation is PdfUriAnnotationWidget)
{
PdfUriAnnotationWidget url = (PdfUriAnnotationWidget)annotation;
//删除超链接
collection.Remove(url);
}
}
}
//保存文档
pdf.SaveToFile("删除超链接.pdf");
pdf.Dispose();
}
}
}
Imports Spire.Pdf
Imports Spire.Pdf.Annotations
Imports System
Imports System.Dynamic
Namespace DeleteHyperlink
Friend Class Program
Shared Sub Main(ByVal args() As String)
'创建PdfDocument的对象
Dim pdf As PdfDocument = New PdfDocument()
'载入PDF文件
pdf.LoadFromFile("示例.pdf")
'删除第一页中的第二个超链接
'PdfPageBase page = pdf.Pages[0];
'page.AnnotationsWidget.RemoveAt(1);
'删除文档中的所有超链接
'循环遍历文档中的页面
Dim page As PdfPageBase
For Each page In pdf.Pages
'获取一个页面中的注释集合
Dim collection As PdfAnnotationCollection = page.AnnotationsWidget
Dim i As Integer
For i = collection.Count - 1 To 0 Step i - 1
Dim annotation As PdfAnnotation = collection(i)
'判断注释是否为PdfUriAnnotationWidget的实例
If TypeOf annotation Is PdfUriAnnotationWidget Then
Dim url As PdfUriAnnotationWidget = CType(annotation, PdfUriAnnotationWidget)
'删除超链接
collection.Remove(url)
End If
Next
Next
'保存文档
pdf.SaveToFile("删除超链接.pdf")
pdf.Dispose()
End Sub
End Class
End Namespace
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。