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();
    }
}

按钮添加效果:

(本文完)

原文地址:https://www.cnblogs.com/Yesi/p/11776114.html

时间: 2024-10-13 14:05:15

Java 在PDF中添加页面跳转按钮的相关文章

web项目中实现页面跳转的两种方式

<a href="javascript:"></a>跳转在网页本身,URL不改变 <a href="#"></a> 跳转在网页本身,URL 改变 java web项目中实现页面跳转的主要方式有两种:第一种,<% response.sendRedirect("index.jsp");%>第二种<jsp:forward page="index.jsp"/>我做

创建Windows Azure网站,使用FTP客户端在网站中添加页面

创建Windows Azure网站 创建web site非常简单,直接上图 FTP的用户名,千万不要搞错了是网站名称\用户名,这样的格式 你可以从截图中看到我添加test.asp作为新的默认页面. azure网站支持php5.3/5.4/5.5, 也支持java 创建Windows Azure网站,使用FTP客户端在网站中添加页面,布布扣,bubuko.com

ngRoute+ngAnimate与JQM中的页面跳转的区别

1.ngRoute+ngAnimate与jQM中的页面跳转有何异同? 相同点: (1)完整的HTML只需要一个 (2)使用异步AJAX请求获取下一个页面 (3)可以实现转场动画 不同点: (1)ngRoute需要配置路由字典:jQM没有,更加灵活 (2)ngRoute访问路由地址的格式——特殊格式的hash http://xxx/index.html#/main jQM访问页面地址——普通的URL http://xxx/tpl/main.html (3)ngRoute访问的路由页面可以使用F5刷

使用Adobe Acrobat X Pro在PDF中添加文字和图片

在pdf中添加文字: 使用右侧“工具”>“内容”>“添加或编辑文本框”来打开“打字机”工具栏.单击pdf中的区域即可添加文字. 修改文字的字体和大小: 添加文字时,文字的字体和大小变灰,不能设置添加文字的字体.解决办法:输入完文字后,按ESC或者点击“选择对象”退出文字编辑状态,然后再确认在“添加或编辑文本框”状态双击刚刚添加的文字,全选,这时候浮动的“打字机工具”工具栏中的字体设置变为可用. 文字部分详见官方帮助 添加图片: 1.可以直接先将图片复制到剪贴板,然后在pdf中直接粘贴,不过这种

向Java枚举类型中添加新方法

除了不能继承enum之外,可将其看做一个常规类.甚至可以有main方法. 注意:必须先定义enum实例,实例的最后有一个分号. 下面是一个例子:返回对实例自身的描述,而非默认的toString返回枚举实例的名字. public enum Color { RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); // 成员变量 private String nam

servlet中实现页面跳转return “r:”和return “f:

servlet中实现页面跳转return “r:”和return “f:”的区别和作用 2015-07-28 14:22741830480 | 浏览 48 次 Pascal 2015-07-28 14:26 #知道行家专业创造价值,火热招募中!# 提问者采纳 热心网友 r是redirect重定向,参数会丢失,url全是跳转后的url.f是forward服务器内部完成转发(参数仍在request里面),url不会变的.

网站开发中web页面跳转几种方式详解

在做web开发中,页面跳转的方式有很多种,然而有些时候这些跳转如何用到恰到好处却很容易被忽视. 客户端触发跳转有如下几种 使用meta元信息 <!--如下表示5秒后跳转到url指定的链接,推荐使用这种方式--> <meta http-equiv="refresh" content="5;url=http://my.oschina.net/ososchina/blog"> 2.使用javascript中的window.location对象 &l

php中实现页面跳转的几种方式

亲测,not复制粘贴 PHP中实现页面跳转有一下几种方式,看了几个人写的不是很条理,自己整理一下 在PHP脚本代码中实现 <?php header("location:url地址") ?> 例如 <?php header("location:helloworld.php")?> 页面会立即跳转,因为header执行了location重定向 延迟跳转(比如登陆成功后会有几秒钟等待时间,然后跳转到了其他页面) <?php header(&q

Java 读取PDF中的文本和图片

本文将介绍通过Java程序来读取PDF文档中的文本和图片的方法.分别调用方法extractText()和extractImages()来读取. 使用工具:Free Spire.PDF for Java(免费版)Jar文件获取导入:方法1:通过官网下载jar文件包.下载后,解压文件,并将lib文件夹下的Spire.Pdf.jar文件导入java程序.导入后如下图: 方法2: 可通过maven仓库安装导入,可参考导入方法. Java代码示例[示例1]读取PDF中的文本 import com.spir