在 PDF 文档中,超链接用于跳转到特定页面、外部网站或电子邮件地址,但随着内容的变更,超链接可能需要更新或删除。通过修改 PDF 中的超链接,用户可以确保链接指向最新的页面或移除已失效的链接,从而提升文档的可读性和专业性。本文介绍如何使用 Spire.PDF for Java 在 Java 中更新或删除 PDF 中的超链接。
安装 Spire.PDF for Java
首先,您需要在 Java 程序中添加 Spire.Pdf.jar 文件作为依赖项。JAR 文件可以从此链接下载。如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而在应用程序中导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>11.4.2</version>
</dependency>
</dependencies>
Java 更新 PDF 中的超链接
Spire.PDF for Java 提供了 PdfTextWebLinkAnnotationWidget.setUrl() 方法,可用于修改 PDF 中的超链接。以下是具体步骤:
- 创建 PdfDocument 对象。
- 使用 PdfDocument.loadFromFile() 方法加载 PDF 文件。
- 通过 PdfDocument.getPages().get() 方法获取文档的第一页。
- 调用 PdfPageBase.getAnnotationsWidget() 方法获取页面的注释集合。
- 使用 PdfAnnotationCollection.get() 方法获取第一个注释并将其转换为 PdfTextWebLinkAnnotationWidget 对象。
- 通过 PdfTextWebLinkAnnotationWidget.setUrl() 方法修改其 URL 地址。
- 使用 PdfDocument.saveToFile() 方法保存修改后的 PDF 文件。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.annotations.PdfAnnotationCollection;
import com.spire.pdf.annotations.PdfTextWebLinkAnnotationWidget;
public class UpdateHyperlinks {
public static void main(String[] args) {
// 创建 PdfDocument 对象
PdfDocument document = new PdfDocument();
// 加载 PDF 文件
document.loadFromFile("示例.pdf");
// 获取第一页
PdfPageBase page = document.getPages().get(0);
// 获取页面的注释集合
PdfAnnotationCollection widgetCollection = page.getAnnotationsWidget();
// 获取集合内第一个超链接注释
PdfTextWebLinkAnnotationWidget uriWidget = (PdfTextWebLinkAnnotationWidget) widgetCollection.get(0);
// 修改超链接 URL地址
uriWidget.setUrl("https://www.ccchina.org.cn/");
// 保存修改后的 PDF 文件
document.saveToFile("更改超链接.pdf");
// 关闭 PDF 文档以释放资源
document.close();
document.dispose();
}
}
Java 删除 PDF 中的超链接
Spire.PDF for Java 还提供了 PdfAnnotationCollection.remove() 方法,可用于删除 PDF 中的超链接。需要注意的是,删除超链接后,其外观仍会保留,但链接功能将被移除。以下是具体步骤:
- 创建 PdfDocument 对象。
- 使用 PdfDocument.loadFromFile() 方法加载 PDF 文件。
- 通过 PdfDocument.getPages().get() 方法获取文档的第一页。
- 调用 PdfPageBase.getAnnotationsWidget() 方法获取页面的注释集合。
- 从后往前遍历注释集合,并检查当前注释是否为 PdfTextWebLinkAnnotationWidget 对象。
- 将当前注释转换为 PdfTextWebLinkAnnotationWidget 对象,并使用 PdfAnnotationCollection.remove() 方法将超链接注释从页面中删除。
- 使用 PdfDocument.saveToFile() 方法保存修改后的 PDF 文件。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.annotations.PdfAnnotation;
import com.spire.pdf.annotations.PdfAnnotationCollection;
import com.spire.pdf.annotations.PdfTextWebLinkAnnotationWidget;
public class RemoveHyperlinks {
public static void main(String[] args) {
// 创建 PdfDocument 对象
PdfDocument document = new PdfDocument();
// 加载 PDF 文件
document.loadFromFile("示例.pdf");
// 获取第一页
PdfPageBase page = document.getPages().get(0);
// 获取页面的注释集合
PdfAnnotationCollection widgetCollection = page.getAnnotationsWidget();
// 检查页面是否有注释
if (widgetCollection.getCount() > 0) {
// 反向遍历注释集合
for (int i = widgetCollection.getCount() - 1; i >= 0; i--) {
// 获取当前注释
PdfAnnotation annotation = widgetCollection.get(i);
// 检查注释是否为文本网页链接
if (annotation instanceof PdfTextWebLinkAnnotationWidget) {
// 将注释强制转换为文本网页链接注释
PdfTextWebLinkAnnotationWidget link = (PdfTextWebLinkAnnotationWidget) annotation;
// 从集合中删除文本网页链接注释
widgetCollection.remove(link);
}
}
}
// 保存修改后的文档到输出文件
document.saveToFile("删除超链接.pdf");
// 关闭 PDF 文档以释放资源
document.close();
document.dispose();
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。