Java 在PDF中添加页面跳转按钮
在PDF 中可通过按钮来添加动作跳转到指定页面,包括跳转到文档首页、文档末页、跳转到上一页、下一页、或跳转到指定页面等。下面将通过java代码来演示如何添加具有以上几种功能的按钮。
使用工具:
- Free Spire.PDF for Java (免费版)
- IntelliJ IDEA
Jar文件获取及导入:
方法1:通过官网下载jar文件包。下载后,解压文件,并将lib文件夹下的Spire.Pdf.jar文件导入java程序。参考如下导入效果:

方法2: 可通过maven仓库安装导入。
Java 代码示例
import com.spire.pdf.*;
import com.spire.pdf.actions.*;
import com.spire.pdf.fields.PdfButtonField;
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 Buttons {
public static void main(String[]args) throws Exception{
//创建文档,添加页面
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile("test.pdf"); //分别获取第一页、第二页及最后一页
PdfPageBase page0 = pdf.getPages().get(0);
PdfPageBase page1 = pdf.getPages().get(1);
PdfPageBase page2 = pdf.getPages().get(pdf.getPages().getCount()-1); //设置允许创建窗体
pdf.setAllowCreateForm(true); //定义float变量来确定按钮的位置及大小
float x = 480;
float y = 750;
float width = 70;
float height = 23; //创建truetype字体
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("楷体", Font.PLAIN, 9), true); //创建按钮0跳转到最后一页
PdfButtonField btn_0 = new PdfButtonField(page0, "btn_0");
Rectangle2D.Float rect = new Rectangle2D.Float(x, y + 15, width, height);
btn_0.setBounds(rect);
btn_0.setFont(font);
btn_0.setText("跳转至最后一页");
btn_0.setBackColor(new PdfRGBColor(245,245,245));
btn_0.setForeColor(new PdfRGBColor(Color.black));
btn_0.setBorderColor(new PdfRGBColor(Color.white));
PdfNamedAction namedAction = new PdfNamedAction(PdfActionDestination.LastPage);
btn_0.getActions().setMouseDown(namedAction);
pdf.getForm().getFields().add(btn_0); //创建按钮1跳转到上一页
PdfButtonField btn_1 = new PdfButtonField(page1, "btn_1");
rect = new Rectangle2D.Float(x, y, width, height);
btn_1.setBounds(rect);
btn_1.setFont(font);
btn_1.setText("上一页");
btn_1.setBackColor(new PdfRGBColor(Color.white));
btn_1.setForeColor(new PdfRGBColor(Color.black));
btn_1.setBorderColor(new PdfRGBColor(245,245,245));
namedAction = new PdfNamedAction(PdfActionDestination.PrevPage);
btn_1.getActions().setMouseDown(namedAction);
pdf.getForm().getFields().add(btn_1); //创建按钮2跳转下一页
PdfButtonField btn_2 = new PdfButtonField(page1, "btn_2");
rect = new Rectangle2D.Float(x, y + height + 5, width, height);
btn_2.setBounds(rect);
btn_2.setFont(font);
btn_2.setText("下一页");
btn_2.setBackColor(new PdfRGBColor(245,245,245));
btn_2.setForeColor(new PdfRGBColor(Color.black));
btn_2.setBorderColor(new PdfRGBColor(Color.white));
namedAction = new PdfNamedAction(PdfActionDestination.NextPage);
btn_2.getActions().setMouseDown(namedAction);
pdf.getForm().getFields().add(btn_2); //创建按钮3跳转到首页
PdfButtonField btn_3 = new PdfButtonField(page2, "btn_3");
rect = new Rectangle2D.Float(x, 60, width, height);
btn_3.setBounds(rect);
btn_3.setFont(font);
btn_3.setText("返回首页");
btn_3.setBackColor(new PdfRGBColor(245,245,245));
btn_3.setForeColor(new PdfRGBColor(Color.black));
btn_3.setBorderColor(new PdfRGBColor(Color.white));
namedAction = new PdfNamedAction(PdfActionDestination.FirstPage);
btn_3.getActions().setMouseDown(namedAction);
pdf.getForm().getFields().add(btn_3); //创建按钮4跳转到指定页
PdfButtonField btn_4 = new PdfButtonField(page2, "btn_4");
rect = new Rectangle2D.Float( x,90 , width, height);
btn_4.setBounds(rect);
btn_4.setText("跳转至第二页");
btn_4.setFont(font);
btn_4.setBackColor(new PdfRGBColor(Color.white));
btn_4.setForeColor(new PdfRGBColor(Color.black));
btn_4.setBorderColor(new PdfRGBColor(245,245,245));
PdfGoToAction goToAction = new PdfGoToAction(new PdfDestination(pdf.getPages().get(1)));
btn_4.getActions().setMouseDown(goToAction);
pdf.getForm().getFields().add(btn_4); //保存文档
pdf.saveToFile("NavigationButton.pdf", FileFormat.PDF);
pdf.close();
}
}
按钮添加效果:


(本文完)
Java 在PDF中添加页面跳转按钮的更多相关文章
- Java 在PDF 中添加超链接
对特定元素添加超链接后,用户可以通过点击被链接的元素来激活这些链接,通常在被链接的元素下带有下划线或者以不同的颜色显示来进行区分.按照使用对象的不同,链接又可以分为:文本超链接,图像超链接,E-mai ...
- Java 在PDF中添加表格
本文将介绍通过Java编程在PDF文档中添加表格的方法.添加表格时,可设置表格边框.单元格对齐方式.单元格背景色.单元格合并.插入图片.设置行高.列宽.字体.字号等. 使用工具:Free Spire. ...
- Java 在PDF中添加工具提示|ToolTip
本文,将介绍如何通过Java后端程序代码在PDF中创建工具提示.添加工具提示后,当鼠标悬停在页面上的元素时,将显示工具提示内容. 导入jar包 本次程序中使用的是 Free Spire.PDF for ...
- web项目中实现页面跳转的两种方式
<a href="javascript:"></a>跳转在网页本身,URL不改变 <a href="#"></a> ...
- Struts2中的页面跳转
内容源自:Struts2中的页面跳转 一.全局页面的设置如果<package>包中的一些action都返回success,并且返回的页面都是同一个JSP页面,这样就可以配置全局的结果页面. ...
- [Xcode 实际操作]九、实用进阶-(23)多个Storyboard故事板中的页面跳转
目录:[Swift]Xcode实际操作 本文将演示多个Storyboard故事板中的页面跳转. 使用快捷键[Command]+[N]创建一个新的故事板文件. (在项目文件夹[DemoApp]上点击鼠标 ...
- php中的页面跳转和重定向
php中的页面跳转和重定向 ThinkPHP中跳转和重定向的区别 跳转: 浏览器认为: 当前URL请求成功, 重新请求新的URL. 浏览器会 记录当前的URL 和 新的URL 在请求历史记录中. 回退 ...
- C# 在PDF中添加墨迹注释Ink Annotation
PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状:该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线.下面,通过C#程序代码介绍如何 ...
- WPF实用指南一:在WPF窗体的边框中添加搜索框和按钮
原文:WPF实用指南一:在WPF窗体的边框中添加搜索框和按钮 在边框中加入一些元素,在应用程序的界面设计中,已经开始流行起来.特别是在浏览器(Crome,IE,Firefox,Opera)中都有应用. ...
随机推荐
- node学习之路
现阶段开始学习使用node开发一个个人博客系统,nodejs 基于V8引擎,是一个让 JavaScript 运行在服务端的开发平台,功能强大 ,Node.js 可以作为服务器向用户提供服务,它跳过了 ...
- Mybatis源码解析,一步一步从浅入深(六):映射代理类的获取
在文章:Mybatis源码解析,一步一步从浅入深(二):按步骤解析源码中我们提到了两个问题: 1,为什么在以前的代码流程中从来没有addMapper,而这里却有getMapper? 2,UserDao ...
- lcx端口转发
目录 0x01 正向端口转发 0x02 反向端口转发 0x03 msf正向shell 0x04 msf反向shell 注: 边界机器 win08 192.168.222.175 内网机器 win7 1 ...
- JAVA知识点总结(五)(常用类)
第十八章:常用类 一.main方法解读: public static void main(String[] args) //当点击运行时,JVM会自动调用main方法 //public: 被JVM调用 ...
- Hive窗口函数最全案例详解
语法: 分析函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置) 常用分析函数: 聚合类 avg().sum().max(). ...
- Ubuntu 卸载openJDK
如果你在 Ubuntu 软件中心安装过 OpenJDK,请先使用如下命令将其删除: $ sudo apt-get purge openjdk*
- MySQL 中间件汇总比较
360 Atlas 较为活跃,Atlas 是由 360 Web平台部基础架构团队开发维护的一个基于 MySQL 协议的数据中间层项目.它是在mysql-proxy 0.8.2版本的基础上,对其进行了优 ...
- Python验证码
from PIL import Image, ImageDraw, ImageFont, ImageFilter import random # 随机字母: def rndChar(): return ...
- 如果有人问你 JFinal 如何集成 EhCache,把这篇文章甩给他
废话不多说,就说一句:在 JFinal 中集成 EhCache,可以提高系统的并发访问速度. 可能有人会问 JFinal 是什么,EhCache 是什么,简单解释一下. JFinal 是一个基于Jav ...
- Python selenium+phantomjs的js动态爬取
Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Firefox.Chrome等.Phanto ...