在阅读很长的 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 的对象并将操作设置为跳转到凯发线上登陆下载网址首页。
- 定义按钮的位置和大小,以及要在按钮上显示的文本。
- 使用自定义的 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 天的临时许可证。