Java 添加頁面跳轉(zhuǎn)按鈕到PDF文檔

概述

當(dāng)我們在查閱含有大量頁面的PDF時(shí),可通過在頁面上添加跳轉(zhuǎn)按鈕來實(shí)現(xiàn)頁面轉(zhuǎn)換,以達(dá)到節(jié)約時(shí)間,提高效率的目的。本文將通過Java程序來演示如何給PDF文檔添加頁面跳轉(zhuǎn)按鈕。通常來說跳轉(zhuǎn)可分為兩種情況:一是跳轉(zhuǎn)至特殊頁面(首頁、最后一頁、上一頁、下一頁);二是跳轉(zhuǎn)至指定頁面(例如:第四頁)。

配置測試環(huán)境

本文代碼示例使用到的工具是Free Spire.PDF for Java,可通過官網(wǎng)下載獲取。解壓后將lib文件夾下的Spire.Pdf.jar手動(dòng)導(dǎo)入IDEA即可。

另外,可也通過Maven倉庫來導(dǎo)入產(chǎn)品及相關(guān)依賴。創(chuàng)建一個(gè)Maven程序,在pom.xml文件中配置Maven倉庫路徑,并指定Spire.PDF for Java的Maven依賴。

<repositories>

??????? <repository>

??????????? <id>com.e-iceblue</id>

??????????? <url>http://repo.e-iceblue.cn/repository/maven-public/</url>

??????? </repository>

??? </repositories>

<dependencies>

??? <dependency>

??????? <groupId>e-iceblue</groupId>

??????? <artifactId>spire.pdf.free</artifactId>

??????? <version>2.6.3</version>

??? </dependency>

</dependencies>

配置完成后,只需點(diǎn)擊“Import Changes”即可導(dǎo)入JAR包。

參考代碼

1、跳轉(zhuǎn)至特殊頁面(首頁、最后一頁、上一頁、下一頁)

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 {

//創(chuàng)建PdfDocument對象,加載PDF文檔

PdfDocument doc = new PdfDocument();

doc.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.pdf");

//獲取最后一頁

PdfPageBase lastPage = doc.getPages().get(doc.getPages().getCount() - 1);

//允許在PDF中創(chuàng)建窗體

doc.setAllowCreateForm(true);

//定義float變量來確定按鈕的位置及大小

float x = 90;

float y = 450;

float width = 150;

float height = 22;

//創(chuàng)建truetype字體

PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN, 13), true);

//創(chuàng)建一個(gè)按鈕跳轉(zhuǎn)至首頁

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);//設(shè)置字體

btn_1.setText("返回首頁");//設(shè)置按鈕提示語

btn_1.setBackColor(new PdfRGBColor(Color.ORANGE));//設(shè)置背景顏色

btn_1.setForeColor(new PdfRGBColor(Color.red));//設(shè)置提示語字體顏色

btn_1.setBorderColor(new PdfRGBColor(Color.blue));//設(shè)置按鈕邊框顏色

//創(chuàng)建PdfNamedAction實(shí)例,在傳入的參數(shù)中選擇上一頁、下一頁、首頁或最后一頁

PdfNamedAction namedAction = new PdfNamedAction(PdfActionDestination.FirstPage);

btn_1.getActions().setMouseDown(namedAction);//應(yīng)用動(dòng)作

doc.getForm().getFields().add(btn_1);//添加按鈕至文檔

//保存文檔

doc.saveToFile("output/NavigationButton.pdf", FileFormat.PDF);

? ? ?doc.close();

??? }

}

注:此處的PdfNamedAction類支持四種按鈕跳轉(zhuǎn)動(dòng)作。分別可實(shí)現(xiàn)頁面跳轉(zhuǎn)至上一頁、首頁、下一頁和最后一頁。

添加效果:

2、跳轉(zhuǎn)至指定頁面(以下代碼演示跳轉(zhuǎn)至文檔第四頁)

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 {

//創(chuàng)建PdfDocument對象,加載PDF文檔

PdfDocument doc = new PdfDocument();

doc.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.pdf");

//獲取最后一頁

PdfPageBase lastPage = doc.getPages().get(doc.getPages().getCount() - 1);

//允許在PDF中創(chuàng)建窗體

doc.setAllowCreateForm(true);

//定義float變量來確定按鈕的位置及大小

float x = 90;

float y = 450;

float width = 150;

float height = 22;

//創(chuàng)建truetype字體

PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN, 13), true);

//創(chuàng)建一個(gè)按鈕跳轉(zhuǎn)到指定頁

PdfButtonField btn_1 = new PdfButtonField(lastPage, "button");

Rectangle2D.Float rect =?new Rectangle2D.Float(x, y + height + 5, width, height);

btn_1.setBounds(rect);//設(shè)置按鈕大小及位置

btn_1.setText("跳轉(zhuǎn)至第四頁");//設(shè)置按鈕提示語

btn_1.setFont(font);//設(shè)置字體

btn_1.setBackColor(new PdfRGBColor(Color.GREEN));//設(shè)置背景顏色

btn_1.setForeColor(new PdfRGBColor(Color.red));//設(shè)置提示語字體顏色

btn_1.setBorderColor(new PdfRGBColor(Color.blue));//設(shè)置按鈕邊框顏色

//創(chuàng)建PdfNamedAction實(shí)例,并指定跳轉(zhuǎn)頁碼

PdfGoToAction goToAction = new PdfGoToAction(new?PdfDestination(doc.getPages().get(3)));

btn_1.getActions().setMouseDown(goToAction);//應(yīng)用動(dòng)作

doc.getForm().getFields().add(btn_1);//添加按鈕至文檔

//保存文檔

doc.saveToFile("output/result.pdf", FileFormat.PDF);

? ? ?doc.close();

??? }

}

添加效果:

(本文完)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容