asp登录页面跳转到注册页面_Java 添加页面跳转按钮到PDF文档

概述

当我们在查阅含有大量页面的PDF时,可通过在页面上添加跳转按钮来实现页面转换,以达到节约时间,提高效率的目的。本文将通过Java程序来演示如何给PDF文档添加页面跳转按钮。通常来说跳转可分为两种情况:一是跳转至特殊页面(首页、最后一页、上一页、下一页);二是跳转至指定页面(例如:第四页)。

配置测试环境

本文代码示例使用到的工具是Free Spire.PDF for Java,可通过E-iceblue中文官网下载获取。解压后将lib文件夹下的Spire.Pdf.jar手动导入IDEA即可。

当然,也可以通过Maven仓库来导入产品及相关依赖。创建一个Maven程序,在pom.xml文件中配置Maven仓库路径,并指定Spire.PDF for Java的Maven依赖。

com.e-icebluehttp://repo.e-iceblue.cn/repository/maven-public/e-iceblue        spire.pdf.free        2.6.3

配置完成后,只需点击”Import Changes”即可导入JAR包。

参考代码

1、跳转至特殊页面(首页、最后一页、上一页、下一页)

import com.spire.pdf.FileFormat;import com.spire.pdf.PdfDocument;import com.spire.pdf.PdfPageBase;import com.spire.pdf.actions.PdfActionDestination;import com.spire.pdf.actions.PdfNamedAction;import com.spire.pdf.fields.PdfButtonField;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对象,加载PDF文档        PdfDocument doc = new PdfDocument();        doc.loadFromFile("C:甥敳獲Test1DesktopSample.pdf");        //获取最后一页        PdfPageBase lastPage = doc.getPages().get(doc.getPages().getCount() - 1);        //允许在PDF中创建窗体        doc.setAllowCreateForm(true);        //定义float变量来确定按钮的位置及大小        float x = 90;        float y = 450;        float width = 150;        float height = 22;        //创建truetype字体        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN, 13), true);       //创建一个按钮跳转至首页        PdfButtonField btn_1 = new PdfButtonField(lastPage, "button");        Rectangle2D.Float 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.ORANGE));//设置背景颜色        btn_1.setForeColor(new PdfRGBColor(Color.red));//设置提示语字体颜色        btn_1.setBorderColor(new PdfRGBColor(Color.blue));//设置按钮边框颜色        //创建PdfNamedAction实例,在传入的参数中选择上一页、下一页、首页或最后一页        PdfNamedAction namedAction = new PdfNamedAction(PdfActionDestination.FirstPage);        btn_1.getActions().setMouseDown(namedAction);//应用动作        doc.getForm().getFields().add(btn_1);//添加按钮至文档        //保存文档        doc.saveToFile("output/NavigationButton.pdf", FileFormat.PDF);        doc.close();    }}

注:此处的PdfNamedAction类支持四种按钮跳转动作。分别可实现页面跳转至上一页、首页、下一页和最后一页。

679e2ea0dce36b4405c0eb7975fdb8fb.png

添加效果:

29c25083c3c6b0e50f3da2c02d0635f4.png

2、跳转至指定页面(以下代码演示跳转至文档第四页)

import com.spire.pdf.FileFormat;import com.spire.pdf.PdfDocument;import com.spire.pdf.PdfPageBase;import com.spire.pdf.actions.PdfGoToAction;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 AddNavigationButton2 {    public static void main(String[] args) throws Exception {        //创建PdfDocument对象,加载PDF文档        PdfDocument doc = new PdfDocument();        doc.loadFromFile("C:甥敳獲Test1DesktopSample.pdf");        //获取最后一页        PdfPageBase lastPage = doc.getPages().get(doc.getPages().getCount() - 1);        //允许在PDF中创建窗体        doc.setAllowCreateForm(true);        //定义float变量来确定按钮的位置及大小        float x = 90;        float y = 450;        float width = 150;        float height = 22;        //创建truetype字体        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN, 13), true);        //创建一个按钮跳转到指定页        PdfButtonField btn_1 = new PdfButtonField(lastPage, "button");        Rectangle2D.Float rect = new Rectangle2D.Float(x, y + height + 5, width, height);        btn_1.setBounds(rect);//设置按钮大小及位置        btn_1.setText("跳转至第四页");//设置按钮提示语        btn_1.setFont(font);//设置字体        btn_1.setBackColor(new PdfRGBColor(Color.GREEN));//设置背景颜色        btn_1.setForeColor(new PdfRGBColor(Color.red));//设置提示语字体颜色        btn_1.setBorderColor(new PdfRGBColor(Color.blue));//设置按钮边框颜色        //创建PdfNamedAction实例,并指定跳转页码        PdfGoToAction goToAction = new PdfGoToAction(new PdfDestination(doc.getPages().get(3)));        btn_1.getActions().setMouseDown(goToAction);//应用动作        doc.getForm().getFields().add(btn_1);//添加按钮至文档        //保存文档        doc.saveToFile("output/result.pdf", FileFormat.PDF);        doc.close();    }}

添加效果:

f8dd34b0ee44efc33a51e30f1abf8bbd.png

(本文完)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

确定最佳聚类数matlab代码_详解DBSCAN聚类

使用DBSCAN标识为员工分组照片由Ishan seefromthesky 在 Unsplash拍摄基于密度的噪声应用空间聚类(DBSCAN)是一种无监督的ML聚类算法。无监督的意思是它不使用预先标记的目标来聚类数据点。聚类是指试图将相似的数据点分组到人工确定的组或簇中。它可以替代KMeans和层次聚类等流…

Arrays.asList 使用细节

通常初始化后使用如下,但是报错 UnsupportOperationException.... 根据提示信息,就是调用add()方法时抛出了异常。顺着堆栈信息往上找,提示的是AbstractList类的108行出了异常,这一行所在方法的具体实现如下: //108行 …

python list元素合并_python list 合并连接字符串的方法

python list 合并连接字符串的方法 更新时间:2013年03月09日 22:02:18 作者: python 列表合并字符串,我们一般会用到字符串的join方法来操作。下面通过代码的形式,详细的说下list怎么拼成字符串? 相关文章这篇文章主要…

单片机按键防抖程序_这些单片机按键设计方案,请拿好,不谢!

在单片机系统里,按键是常见的输入设备,在本文中介绍几种按键硬件、软件设计方面的技巧。一般的在按键的设计上,一般有四种方案,创客学院带你零基础学习电子产品设计。一是GPIO口直接检测单个按键,如图1.1所示;二是按键…

Oracle 11G 安装详解

oracle官网下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 官网下载需要注册orcale账号,比较繁琐,这里直接放已经下载好的安装包链接 Oracle11G下载链接: https://pan.baidu.com/s/1v6oD4jAt…

kubeadm部署k8s_用 kubeadm 部署生产级 k8s 集群

概述kubeadm 已⽀持集群部署,且在1.13 版本中 GA,⽀持多 master,多 etcd 集群化部署,它也是官⽅最为推荐的部署⽅式,⼀来是由它的 sig 组来推进的,⼆来 kubeadm 在很多⽅⾯确实很好的利⽤了 kubernetes 的许…

统计学习方法概论---分类问题

为什么80%的码农都做不了架构师?>>> 分类问题 转载于:https://my.oschina.net/liyangke/blog/2945185

CENTOS7 Python3.7 PyAudio 安装

2019独角兽企业重金招聘Python工程师标准>>> 出现错误: gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -fPIC -I/usr/local/python371/include/python3.7m -c src/_portaudiomodule.c -o build/temp.linux-aarch64-3.7/src/…

bash for循环_Bash 中的 For 循环

循环是编程语言的基本概念之一。当你想要一遍又一遍地运行一系列命令直到达到某个条件后终止退出时,循环很方便。在诸如 Bash 之类的脚本语言中,循环对于自动执行重复性任务非常有用。在 Bash 脚本中有3个基本的循环结构,for 循环&#xff0c…

linux 信号_Linux的信号和线程

Linux的信号和线程-Tech Talk 让技术发出声音​www.ttalk.im什么是线程线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC)&#xff0…

python 数据结构

一. 深入链表 先来介绍一些链表具备的一些常用方法: append(x) : 把一个元素添加到链表的结尾 extend(L) : 将另外一个链表合并到该链表中 insert(i,x) : 插入一个元素到指定位置的前面 remove(x) : 删除链表中第一个值为x的元素 如果没有这样的元素 则返回错误 pop…

go语言项目优化(经验之谈)

1 Go的应用场景 在斗鱼我们将GO的应用场景分为以下三类,缓存类型数据,实时类型数据,CPU密集型任务。这三类应用场景都有着各自的特点。 ● 缓存类型数据在斗鱼的案例就是我们的首页,列表页,这些页面和接口的特点是不同…

python交互界面用图片当背景_wxPython实现窗口用图片做背景

本文实例为大家分享了wxPython实现窗口用图片做背景的具体代码,供大家参考,具体内容如下 效果图:实现代码: #!/usr/bin/env python # -*- encoding:utf-8 -*- import wx class MyPanel(wx.Panel): def __init__(self,parent,id): …

c 字符串转数字_C语言实现十进制转216进制、十六进制转十进制

1、十进制转2~16进制【问题描述】从键盘输入十进制整数num及转换的进制数base,将整数num转换为base进制(base取值范围为 2~16)。方法为:十进制数除base取余法,即十进制数除以base,余数为权位上的数&#xf…

一个简单的LINQ TO XML, AJAX 例子[译]

这个教程是用Visual Studio.net 2008建立,也可以使用VS2005,但你需要从这里下载安装Microsofts ASP.NET AJAX Extensions,AJAX和LINQ是微软目前主要焦点,两个看上去不足为奇,但背后都隐藏着巨大的潜力和力量。在这个示…

python3性能还低吗_Python3 vs. Python2 大作战,谁将是性能之王?

渲染 HTML 模板 django_html 测试将使用 Django 模板渲染引擎来构建一个 150x150 的 HTML 表格。 它利用了 Django 引擎的 Content 和 Template 类。如图所示,Python 3.7 比 Python 2.7 快 1.19 倍,但除此之外,其他 Python 3 版本都没有 Pyth…

python day08

一 文件处理补充 控制文件中光标移动 1 f.read(n): l.文件打开方式为文本模式的时,代表读取N个字符 ll.文件打开方式为b模式时,读取N个字节 强调:只有在read(n)模式下 N代表字符个数,除此之外的是以字节为单位 2 f.seek(): 光标移动是以字节为单位的整数移动. 三种模式:(分别为…

VSCode 小鸡汤 第00期 —— 安装和入门

简介 这将是一个新的系列,将会以 Visual Studio Code(后文都简称为 VSCode 啦)的操作,环境配置,插件介绍为主,为大家不定期的介绍 VSCode 的一些操作技巧,所以取名 VSCode 小鸡汤,本…

一次缓存性能问题排查

概述以下分享的都跳过了很多坑,包括redis、tomcat环境配置、机器硬件配置等等问题(与线上保持一致,或者硬件性能减配系数,例如线上:8C16G,压测:4C8G,系数简单相差2倍)&am…