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.pswp.cn/news/276846.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276846.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276846.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

和我一起學WCF(6):宿主(Hosting)

WCF所支持的宿主服務: 1.Self-hosting:控制臺應用程序,Windows應用程序,Windows服務,HTTP,TCP,named pipes,MSMQ 2.IIS/ASP.NET 3.Windows Activation Service ServiceHost實例必須進行初始化為服務暴露出端點(endpoint) 每個ServiceHost與指定的服務類型相關聯 核心方法: Open…

.Net FrameWork

.NET Micro Framework白皮書http://download.microsoft.com/download/3/1/9/319f7469-70bd-4e7c-a6cc-e5ad96939af4/net_micro_framework_whitepaper_v_1.0.docWhat is "Type" in managed heap?http://www.cnblogs.com/artech/archive/2007/06/04/769805.html轉載于…

Retrofit+RxJava聯網工具類

在python 進程、線程 (一)中簡單的說過,CPython中的GIL使得同一時刻只能有一個線程運行,即并發執行。并且即使是多核CPU,GIL使得同一個進程中的多個線程也無法映射到多個CPU上運行,這么做最初是為了安全著想,慢慢的也成…

確定最佳聚類數matlab代碼_詳解DBSCAN聚類

使用DBSCAN標識為員工分組照片由Ishan seefromthesky 在 Unsplash拍攝基于密度的噪聲應用空間聚類(DBSCAN)是一種無監督的ML聚類算法。無監督的意思是它不使用預先標記的目標來聚類數據點。聚類是指試圖將相似的數據點分組到人工確定的組或簇中。它可以替代KMeans和層次聚類等流…

Arrays.asList 使用細節

通常初始化后使用如下,但是報錯 UnsupportOperationException.... 根據提示信息,就是調用add()方法時拋出了異常。順著堆棧信息往上找,提示的是AbstractList類的108行出了異常,這一行所在方法的具體實現如下: //108行 …

[分享] 精神崩潰的老鼠

李國棟床上堆著書,每天晚上睡在榻榻米上,讀書讀到凌晨一兩點,讀到兩眼充血,像針扎一樣痛苦,才把書放開。蜷縮到榻榻米上,用繩子把左腿跟一只桌腳綁在一起,熄了燈睡覺。 “這樣一來&#xff0…

(七)整合spring cloud云服務架構 - common-service 項目構建過程

我們將對common-service整個項目進行剖析,將整個構建的流程給記錄下來,讓更多的關注者來參考學習。首先在構建spring cloud的common-service之前,我們需要準備的技術:Maven(項目構建)、Spring Boot、Spring…

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

python list 合并連接字符串的方法 更新時間:2013年03月09日 22:02:18 作者: python 列表合并字符串,我們一般會用到字符串的join方法來操作。下面通過代碼的形式,詳細的說下list怎么拼成字符串? 相關文章這篇文章主要…

修改citrix 默認偵聽端口的命令和XML Service端口

修改citrix 默認偵聽端口的命令: 在命令行下輸入icaport /port:2494,或你所想改成的端口 如果輸入 icaport /reset 恢復默認偵聽端口 ctxxmlss /r8080 在citrix的外部客戶端通過web方式登陸時,提示“the alternate address cannot…

spfa算法

1 轉載于:https://www.cnblogs.com/Emcikem/p/11346073.html

集成方法-概念理解

集成方法(ensemble method)又叫元算法(meta-algorithm):將不同的分類器組合起來。 通俗的說:就是三個臭皮匠賽過諸葛亮。做決定時,考慮多個人的意見,不是一個人的意見 集成方法&…

單片機按鍵防抖程序_這些單片機按鍵設計方案,請拿好,不謝!

在單片機系統里,按鍵是常見的輸入設備,在本文中介紹幾種按鍵硬件、軟件設計方面的技巧。一般的在按鍵的設計上,一般有四種方案,創客學院帶你零基礎學習電子產品設計。一是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 的許…

poj 題目分類

1000 AB Problem 送分題 1001 Exponentiation 高精度 1003 Hangover 送分題 1004 Financial Management 送分題 1005 I Think I Need a Houseboat 幾何 1006 Biorhythms 送分題 1007 …

模板的語法

我已經碰到過好幾次這種錯誤了. template<typename R>static_inline vec4<typename R::scalar>point(constrhs2<R>&v) { returnvec4<P>(v.x, v.y, 0, 1); } template<typename R>static_inline vec4<typename R::sca…

統計學習方法概論---分類問題

為什么80%的碼農都做不了架構師&#xff1f;>>> 分類問題 轉載于:https://my.oschina.net/liyangke/blog/2945185

IEPLUS(IE增強性插件)

用Vista好長好長時間了&#xff0c;除了比較吃硬件、老的游戲不兼容、我350W像素的老羅技不能用等等&#xff0c;感覺不是非常不錯的。IE 7也還可以&#xff0c;后來我試用了傲游、火狐&#xff0c;在多標簽后傲游的一些操作更人性化&#xff0c;我最喜歡它的托拉即可自動出新標…