`
高级java工程师
  • 浏览: 396848 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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中添加页面跳转按钮功能,本文给大家提供了多种功能的按钮,需要的朋友可以参考下

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第一部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    Java企业微信机器人实现.pdf

    Java企业微信机器⼈实现 1. 实体类 package com.robot.message; /** * 群机器⼈的消息类型. */ public class GroupRobotMsgType { /** * ⽂本消息. */ public static final String TEXT = "text"; /** * 图⽚消息. *...

    Java web 期末大作业,完成度100%附带文档.

    1. 用户进入系统未进行登录则自行跳转登录页面; 2. 点击忘记密码可进行密码找回; 3. 提交信息进行校验,查看用户名密码是否为空以及是否符合格式,随后在后台进行校验,合格则进行登录跳转到用户界面; 4. 若登录...

    李兴华Java Web开发实战经典(高清版) Part2

    MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第二部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得Session Id 6.5.2、登陆及注销 6.5.3、判断新用户 6.5.4、取得用户的操作时间 6.6、application对象 6.6.1、取得虚拟目录对应的绝对路径 ...

    javaOA办公系统模块设计方案.pdf

    流程管理 :导⼊导出流程资源⽂件、查看流程图、根据流程实例反射出流程模型、激活挂起 、⾃由跳转 3.运⾏中流程:查看流程信息、当前任务节点、当前流程图、作废暂停流程、指派待办⼈ 4.历史的流程:查看流程信息、...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得Session Id 6.5.2、登陆及注销 6.5.3、判断新用户 6.5.4、取得用户的操作时间 6.6、application对象 6.6.1、取得虚拟目录对应的绝对路径 ...

    java web 视频、电子书、源码(李兴华老师出版)

    MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发...

    Eclipse中文教程.pdf

    2.8.2图标和按钮...................................................................................................................................31 2.9视景...............................................

    基于 servlet+jsp+mysql 实现教务管理系统【100012134】

    基于 MVC 的分层思想及采用 jsp+servelt 技术的 B/S 结构的应用系统,系统主要开发语言为 Java,JSP。数据库要求使用 MySQL8.0,应用服务器选用 Tomcat 服务器。 学生模块: 注册: 用户点击注册,进行注册; 用户...

    《Google Android开发入门与实战》.pdf

    11.2.3 华丽转身——实现多页面跳转 203 11.2.4 始终为用户做好服务——增加service 203 11.2.5 细节决定成败——完善应用细节 203 11.3 成功就在眼前——应用测试和发布 204 11.3.1 只欠东风——应用...

    node-render-html:node渲染A股所有股票研报数据,一次性生成静态html文件

    缺点:后端Java生成难度大,还要使用canvas进行“截图”然后生成PDF,并且页面无交互功能。 采用方案 可以在每日生成大盘结束后动态生成html放置于服务器中,给出链接用户访问即可。并且由于是html页面可以进行点击...

    网页与Web程序设计 课件 ppt 机械工业出版社 part1

    8.2.9 添加跳转菜单 164 8.2.10 添加搜索引擎 165 本章小结 168 思考题 168 第9章 层与行为 169 9.1 层的创建与基本操作 169 9.2 层的属性设置 171 9.2.1 选择层 171 9.2.2 层属性面板的使用 172 9.3 层的...

    docsviewer:文档查看器云项目

    在查看页面上,您可以查看您的文档,有三个按钮可供您转到上一页、下一页或跳转到特定页面。支持的格式:- ppt pptx pdf 外径文档文档项目扩展:- 支持更多格式。 从任何地方访问文档的登录和存储功能

Global site tag (gtag.js) - Google Analytics