通過(guò)Java實(shí)現(xiàn)對(duì)PDF頁(yè)面的詳細(xì)設(shè)置
前言
下面的示例將介紹通過(guò)Java編程來(lái)對(duì)PDF頁(yè)面進(jìn)行個(gè)性化設(shè)置的方法,包括設(shè)置頁(yè)面大小、頁(yè)邊距、紙張方向、頁(yè)面旋轉(zhuǎn)等。這里有如下多種頁(yè)面大小尺寸可供選擇:
同時(shí),設(shè)置文檔內(nèi)容旋轉(zhuǎn)時(shí),可支持如下角度進(jìn)行內(nèi)容旋轉(zhuǎn):
使用工具
Free Spire.PDF of Java 2.2.2(免費(fèi)版)
方法1:
通過(guò)官網(wǎng)下載并引用jar,如下步驟:
步驟1:在Java程序中新建一個(gè)文件夾可命名為L(zhǎng)ib。并將產(chǎn)品包中的jar文件(如下圖)復(fù)制到新建的文件 夾下。
步驟2:復(fù)制文件后,添加到引用類庫(kù):選中這個(gè)jar文件,點(diǎn)擊鼠標(biāo)右鍵,選擇“Build Path” – “Add to Build Path”。完成引用。
方法2:
通過(guò)maven 安裝。
Java示例(供參考)
import com.spire.pdf.*; import com.spire.pdf.graphics.PdfMargins; import java.awt.*; import java.awt.geom.Dimension2D; import java.awt.geom.Point2D; public class PageSettings_PDF { public static void main(String[] args){ //創(chuàng)建PdfDocument對(duì)象 PdfDocument originalDoc = new PdfDocument(); //加載PDF文件 originalDoc.loadFromFile("input.pdf"); //創(chuàng)建一個(gè)新的PdfDocument實(shí)例 PdfDocument newDoc = new PdfDocument(); //遍歷所有PDF 頁(yè)面 Dimension2D dimension2D = new Dimension(); for (int i = 0; i < originalDoc.getPages().getCount(); i++) { PdfPageBase page = originalDoc.getPages().get(i); if (i == 0) { //設(shè)置新文檔第一頁(yè)的頁(yè)面寬、高為原來(lái)的1.2倍 float scale = 1.2f; float width = (float) page.getSize().getWidth() * scale; float height = (float) page.getSize().getHeight() * scale; dimension2D.setSize(width, height); //設(shè)置新文檔第一頁(yè)的頁(yè)邊距為左右50,上下100 PdfMargins margins = new PdfMargins(50, 100); PdfPageBase newPage = newDoc.getPages().add(dimension2D, margins); //復(fù)制原文檔的內(nèi)容到新文檔 newPage.getCanvas().drawTemplate(page.createTemplate(), new Point2D.Float()); } if (i == 1) { //設(shè)置新文檔第二頁(yè)的頁(yè)邊距為左右100、上下100 PdfMargins margins = new PdfMargins(100,100); //設(shè)置新文檔第二頁(yè)的頁(yè)面大小為A3 PdfPageBase newPage = newDoc.getPages().add(PdfPageSize.A3, margins); //調(diào)整畫布,設(shè)置內(nèi)容也根據(jù)頁(yè)面的大小進(jìn)行縮放 double wScale = (PdfPageSize.A3.getWidth() - 10) / PdfPageSize.A3.getWidth(); double hScale = (PdfPageSize.A3.getHeight() - 10) / PdfPageSize.A3.getHeight(); newPage.getCanvas().translateTransform(wScale, hScale); //復(fù)制原文檔的內(nèi)容到新文檔 newPage.getCanvas().drawTemplate(page.createTemplate(), new Point2D.Float()); } if (i == 2) { //設(shè)置新文檔第三頁(yè)的頁(yè)邊距為左右200,上下50 PdfMargins margins = new PdfMargins(240, 50); //設(shè)置新文檔第三頁(yè)的頁(yè)面大小為A3, 頁(yè)面旋轉(zhuǎn)角度為0,紙張方向?yàn)樗? PdfPageBase newPage = newDoc.getPages().add(PdfPageSize.A3, margins, PdfPageRotateAngle.Rotate_Angle_0, PdfPageOrientation.Landscape); //調(diào)整畫布,設(shè)置內(nèi)容也根據(jù)頁(yè)面的大小進(jìn)行縮放 double wScale = PdfPageSize.A4.getHeight() / page.getSize().getWidth(); double hScale = PdfPageSize.A4.getWidth() / page.getSize().getHeight(); newPage.getCanvas().translateTransform(wScale, hScale); //復(fù)制原文檔的內(nèi)容到新文檔 newPage.getCanvas().drawTemplate(page.createTemplate(), new Point2D.Float()); } //保存PDF newDoc.saveToFile("pdfPageSetting.pdf"); } } }
完成代碼后,運(yùn)行程序,生成文檔。經(jīng)過(guò)頁(yè)面設(shè)置,效果如下圖所示:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring高級(jí)注解@PropertySource詳細(xì)解讀
這篇文章主要介紹了Spring高級(jí)注解@PropertySource詳細(xì)解讀,@PropertySource注解用于指定資源文件讀取的位置,它不僅能讀取properties文件,也能讀取xml文件,并且通過(guò)YAML解析器,配合自定義PropertySourceFactory實(shí)現(xiàn)解析yaml文件,需要的朋友可以參考下2023-11-11springcloud?nacos動(dòng)態(tài)線程池Dynamic?tp配置接入實(shí)戰(zhàn)詳解
這篇文章主要為大家介紹了springcloud?nacos動(dòng)態(tài)線程池Dynamic?tp配置接入實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12springboot中的@value取不到正確的值問(wèn)題
這篇文章主要介紹了springboot中的@value取不到正確的值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12MyBatis實(shí)現(xiàn)表連接查詢寫法(三種對(duì)應(yīng)關(guān)系)的方法總結(jié)
這篇文章主要介紹了MyBatis實(shí)現(xiàn)表連接查詢寫法(一對(duì)一關(guān)系、一對(duì)多關(guān)系、多對(duì)多關(guān)系)的方法,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-01-01java與微信小程序?qū)崿F(xiàn)websocket長(zhǎng)連接
這篇文章主要為大家詳細(xì)介紹了java與微信小程序?qū)崿F(xiàn)websocket長(zhǎng)連接,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05knife4j?整合?springboot的過(guò)程詳解
這篇文章主要介紹了knife4j整合springboot的過(guò)程,本次整合springboot版本為2.3.12,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09java通過(guò)復(fù)選框控件數(shù)組實(shí)現(xiàn)添加多個(gè)復(fù)選框控件示例分享
編寫程序,通過(guò)復(fù)選框控件數(shù)組事先選擇用戶愛(ài)好信息的復(fù)選框,在該程序中,要求界面中的復(fù)選框數(shù)量可以根據(jù)指定復(fù)選框名稱的字符串?dāng)?shù)組的長(zhǎng)度來(lái)自動(dòng)調(diào)節(jié)2014-02-02解決Spring?Security升級(jí)到5.5.7、5.6.4及以上啟動(dòng)報(bào)錯(cuò)出現(xiàn)版本不兼容的問(wèn)題
這篇文章主要介紹了解決Spring?Security升級(jí)到5.5.7、5.6.4及以上啟動(dòng)報(bào)錯(cuò)出現(xiàn)版本不兼容的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08