當咱們在查閱含有大量頁面的PDF時,可經過在頁面上添加跳轉按鈕來實現頁面轉換,以達到節約時間,提升效率的目的。本文將經過Java程序來演示如何給PDF文檔添加頁面跳轉按鈕。一般來講跳轉可分爲兩種狀況:一是跳轉至特殊頁面(首頁、最後一頁、上一頁、下一頁);二是跳轉至指定頁面(例如:第四頁)。html
本文代碼示例使用到的工具是Free Spire.PDF for Java,可經過官網下載獲取。解壓後將lib文件夾下的Spire.Pdf.jar手動導入IDEA便可。java
另外,可也經過Maven倉庫來導入產品及相關依賴。建立一個Maven程序,在pom.xml文件中配置Maven倉庫路徑,並指定Spire.PDF for Java的Maven依賴。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>
配置完成後,只需點擊「Import Changes」便可導入JAR包。工具
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:UsersTest1DesktopSample.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類支持四種按鈕跳轉動做。分別可實現頁面跳轉至上一頁、首頁、下一頁和最後一頁。測試
添加效果:字體
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:UsersTest1DesktopSample.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(); } }
添加效果:url
(本文完)spa