在阅读很长的 PDF 文档时,读者可能会疲于上下滚动来寻找想要的信息。因此,为了提升文档的阅读体验,文档作者可以在文档中添加导航工具。导航按钮正是一个非常实用的导航工具,尤其是用来导航到相关内容的位置特别方便。PDF 中的导航按钮是在页面上显示为带有提示文本的按钮,文档阅读者可以通过点击按钮轻松跳转到文档的相应位置。本文将展示如何使用 Spire.PDF for 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.1.2</version>
</dependency>
</dependencies>
在 PDF 文档中插入导航按钮
Spire.PDF for Java 提供的 PdfButtonField 类代表 PDF 文档中的按钮,此类下的方法可以用于设置按钮的格式和点击按钮时执行的操作。我们可以创建自定义的 addNavigationButton() 方法,再将按钮、动作、矩形区域、文本作为参数传递给此方法,从而创建导航按钮。详细操作步骤如下:
- 创建 PdfDocument 类的对象。
- 使用 PdfDocument.loadFromFile() 方法载入 PDF 文档。
- 使用 PdfDocument.getPages().get() 方法获取文档最后一页。
- 使用 PdfDocument.setAllowCreateForm() 方法允许创建 PDF 表单命令。
- 创建 PdfButtonField 的对象。
- 创建 PdfNamedAction 的对象并将操作设置为跳转到首页。
- 定义按钮的位置和大小,以及要在按钮上显示的文本。
- 使用自定义的 addNavigationButton() 方法添加一个跳转到首页的导航按钮。
- 创建另一个 PdfButtonField 的对象。
- 创建一个 PdfGoToAction 的对象并将操作设置为跳转到第三页。
- 定义按钮的位置和大小,以及要在按钮上显示的文本。
- 使用自定义的 addNavigationButton() 方法添加一个跳转到第三页的导航按钮。
- 使用 PdfDocument.saveToFile() 方法保存文档。
- Java
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.actions.PdfAction;
import com.spire.pdf.actions.PdfActionDestination;
import com.spire.pdf.actions.PdfGoToAction;
import com.spire.pdf.actions.PdfNamedAction;
import com.spire.pdf.fields.PdfButtonField;
import com.spire.pdf.fields.PdfForm;
import com.spire.pdf.general.PdfDestination;
import com.spire.pdf.graphics.PdfRGBColor;
import com.spire.pdf.graphics.PdfTrueTypeFont;
import java.awt.*;
import java.awt.geom.Rectangle2D;
public class addNavigationButton {
public static void main(String[] args) throws Exception {
//创建PdfDocument类的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文档
pdf.loadFromFile("资产负债表.pdf");
//获取最后一页
PdfPageBase lastPage = pdf.getPages().get(pdf.getPages().getCount() - 1);
//允许在PDF文档中创建表单命令
pdf.setAllowCreateForm(true);
//创建PdfButtonField的对象
PdfButtonField btn_1 = new PdfButtonField(lastPage, "btn_1");
//创建dfNamedAction的对象并将操作设置为跳转到第一页
PdfNamedAction namedAction = new PdfNamedAction(PdfActionDestination.FirstPage);
//定义按钮的位置和大小,以及要在按钮上显示的文本
float x = 150;
float y = 300;
float width = 170;
float height = 22;
Rectangle2D.Float rect = new Rectangle2D.Float(x, y, width, height);
String text = "跳转到第一页";
//使用自定义的方法添加一个跳转到首页的导航按钮
addNavigationButton(btn_1, rect, text, namedAction);
//创建另一个PdfButtonField的对象
PdfButtonField btn_2 = new PdfButtonField(lastPage, "btn_2");
//创建PdfGoToAction的对象并将操作设置为跳转到第三页
PdfGoToAction goToAction = new PdfGoToAction(new PdfDestination(pdf.getPages().get(2)));
//定义按钮的位置和大小,以及要在按钮上显示的文本
rect = new Rectangle2D.Float( x, y + height + 5, width, height);
String text1 = "跳转到第三页";
//使用自定义的方法添加一个跳转到第三页的导航按钮
addNavigationButton(btn_2, rect, text1, goToAction);
//保存文档
pdf.saveToFile("导航按钮.pdf", FileFormat.PDF);
pdf.close();
}
static void addNavigationButton(PdfButtonField btn, Rectangle2D.Float rect, String text, PdfAction action) {
//创建PdfTrueTypeFont的对象
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("黑体", Font.PLAIN, 13), true);
//设置按钮的位置和大小
btn.setBounds(rect);
//设置按钮上文本的字体
btn.setFont(font);
//设置按钮上的文本
btn.setText(text);
//设置按钮颜色
btn.setBackColor(new PdfRGBColor(Color.ORANGE));
//设置按钮上文本的颜色
btn.setForeColor(new PdfRGBColor(Color.blue));
//设置按钮的边框颜色
btn.setBorderColor(new PdfRGBColor(Color.green));
//设置按钮在鼠标点击后的执行的操作
btn.getActions().setMouseDown(action);
//将按钮添加到文档中
PdfForm form = new PdfForm();
form.getFields().add(btn);
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。