在阅读很长的 pdf 文档时,读者可能会疲于上下滚动来寻找想要的信息。因此,为了提升文档的阅读体验,文档作者可以在文档中添加导航工具。导航按钮正是一个非常实用的导航工具,尤其是用来导航到相关内容的位置特别方便。pdf 中的导航按钮是在页面上显示为带有提示文本的按钮,文档阅读者可以通过点击按钮轻松跳转到文档的相应位置。本文将展示如何使用 spire.pdf for java 通过程序实现添加导航按钮到 pdf 文档。
安装 spire.pdf for java
首先,您需要在 java 程序中添加 spire.pdf.jar 文件作为依赖项。jar 文件可以从此链接下载。如果您使用 maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而在应用程序中导入 jar 文件。
com.e-iceblue
e-iceblue
https://repo.e-iceblue.cn/repository/maven-public/
e-iceblue
spire.pdf
9.5.6
在 pdf 文档中插入导航按钮
spire.pdf for java 提供的 pdfbuttonfield 类代表 pdf 文档中的按钮,此类下的方法可以用于设置按钮的格式和点击按钮时执行的操作。我们可以创建自定义的 addnavigationbutton() 方法,再将按钮、动作、矩形区域、文本作为参数传递给此方法,从而创建导航按钮。详细操作步骤如下:
- 创建 pdfdocument 类的对象。
- 使用 pdfdocument.loadfromfile() 方法载入 pdf 文档。
- 使用 pdfdocument.getpages().get() 方法获取文档最后一页。
- 使用 pdfdocument.setallowcreateform() 方法允许创建 pdf 表单命令。
- 创建 pdfbuttonfield 的对象。
- 创建 pdfnamedaction 的对象并将操作设置为跳转到ag凯发旗舰厅首页。
- 定义按钮的位置和大小,以及要在按钮上显示的文本。
- 使用自定义的 addnavigationbutton() 方法添加一个跳转到ag凯发旗舰厅首页的导航按钮。
- 创建另一个 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 = "跳转到第一页";
//使用自定义的方法添加一个跳转到ag凯发旗舰厅首页的导航按钮
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 天的临时许可证。