概述
當我們在查閱含有大量頁面的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類支持四種按鈕跳轉動作。分別可實現頁面跳轉至上一頁、首頁、下一頁和最后一頁。

添加效果:

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(); }}
添加效果:

(本文完)