当前位置: 移动技术网 > IT编程>开发语言>Java > Java 在PDF中添加页面跳转按钮

Java 在PDF中添加页面跳转按钮

2019年11月01日  | 移动技术网IT编程  | 我要评论

在pdf 中可通过按钮来添加动作跳转到指定页面,包括跳转到文档首页、文档末页、跳转到上一页、下一页、或跳转到指定页面等。下面将通过java代码来演示如何添加具有以上几种功能的按钮。

使用工具:

  • free spire.pdf for java (免费版)
  • intellij idea

jar文件获取及导入:

方法1通过官网下载jar文件包。下载后,解压文件,并将lib文件夹下的spire.pdf.jar文件导入java程序。参考如下导入效果:

 

方法2 可通过

 

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

按钮添加效果:

 

 

(本文完)

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网