Java 轉換 HTML 到PDF有許多類庫,今天我們介紹一下第三方免費的類庫OpenPDF。
1. OpenPDF
OpenPDF是免費的Java類庫 ,遵從LGPL 和 MPL協議,所以基本上能夠可以隨意使用。OpenPDF是基于iTEXT的,目前來說也是維護的比較好的Java操作PDF的開源軟件。
話不多說,且看所需要的依賴,
< dependency >
< groupId >org.jsoup< /groupId >
< artifactId >jsoup< /artifactId >
< version >1.13.1< /version >
< /dependency >
< dependency >
< groupId >com.openhtmltopdf< /groupId >
< artifactId >openhtmltopdf-core< /artifactId >
< version >1.0.6< /version >
< /dependency >
< dependency >
< groupId >com.openhtmltopdf< /groupId >
< artifactId >openhtmltopdf-pdfbox< /artifactId >
< version >1.0.6< /version >
< /dependency >
jsoup可以將html文件轉換成輸入流等,也可以遍歷html的DOM節點,提取元素及樣式等。
2. 示例
本篇示例將以下html文件轉換成pdf
< html >
< head >
< style >
.center_div {
border: 1px solid #404e94;
margin-left: auto;
margin-right: auto;
background-color: #f6d0ed;
text-align: left;
padding: 8px;
}
table {
width: 100%;
border: 1px solid black;
}
th, td {
border: 1px solid black;
}
body,html,input{font-family:"msyh";}
< /style >
< /head >
< body >
< div class="center_div" >
< h1 >Hello java North!< /h1 >
< div >
< p >convert html to pdf.< /p >
< /div >
< div >
< table >
< thead >
< th >ROLE< /th >
< th >NAME< /th >
< th >TITLE< /th >
< /thead >
< tbody >
< tr >
< td >MARKSMAN< /td >
< td >ASHE< /td >
< td >THE FROST ARCHER< /td >
< /tr >
< tr >
< td >MAGES< /td >
< td >ANNIE< /td >
< td >THE DARK CHILD< /td >
< /tr >
< tr >
< td >射手< /td >
< td >凱塔琳< /td >
< td >皮城女警< /td >
< /tr >
< /tbody >
< /table >
< /div >
< /div >
< /body >
< /html >
以上html用瀏覽器打開如下,亂碼是因為中文字體不識別,下面轉換的時候會加載對應的字體來進行轉換。

使用Java轉換HTML到PDF代碼如下:
public class HtmlToPDFOpenSource {
public static void main(String[] args) throws IOException {
HtmlToPDFOpenSource htmlToPDFOpenSource = new HtmlToPDFOpenSource();
htmlToPDFOpenSource.generatePdfByOpenhtmltopdf();
}
private void generatePdfByOpenhtmltopdf() throws IOException {
File inputHtml = new File("E:javaNorthjava-study-notejavaOpenSourcesrcmainresourcestest.html");
//加載html文件
Document document = Jsoup.parse(inputHtml, "UTF-8");
document.outputSettings().syntax(Document.OutputSettings.Syntax.html);
//引入資源目錄,可以單獨引入css,圖片文件等
String baseUri = FileSystems.getDefault()
.getPath("javaOpenSourcesrcmainresources")
.toUri().toString();
try (OutputStream os = new FileOutputStream("javaOpenSourcesrcmainresourcestestOpenLeagueoflegends1.pdf")) {
PdfRendererBuilder builder = new PdfRendererBuilder();
builder.withUri("javaOpenSourcesrcmainresourcestestOpenLeagueoflegends1.pdf");
builder.toStream(os);
builder.withW3cDocument(new W3CDom().fromJsoup(document), baseUri);
//引入指定字體,注意字體名需要和css樣式中指定的字體名相同
builder.useFont(new File("javaOpenSourcesrcmainresourcesfontsmsyh.ttf"),"msyh",1,BaseRendererBuilder.FontStyle.NORMAL, true);
builder.run();
}
}
}
使用Java代碼轉換成PDF如下(示例中使用了微軟雅黑中文字體):

上述html文件中增加如下 外部樣式 :
< link href="style.css" rel="stylesheet" >
并在resources目錄下添加style.css文件,重新生成PDF文件如下。

3. 總結
本片介紹了使用OpenPDF將html文件轉換成PDF文件。同時也使用了自定義字體,外部樣式。但是以下幾點需要格外注意。
- Java代碼中加載的字體名稱要和HTML引用的CSS樣式中的字體名相同 ({font-family:"msyh";})。
- HTML文件標簽節點必須閉合().否則解析會失敗。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
開源軟件
+關注
關注
0文章
215瀏覽量
16601 -
JAVA
+關注
關注
20文章
3001瀏覽量
116419 -
HTML
+關注
關注
0文章
280瀏覽量
48443 -
PDF
+關注
關注
1文章
177瀏覽量
36130
發布評論請先 登錄
相關推薦
熱點推薦
pdf轉換成jpg軟件如何使用
大家在工作中對不同的文件格式,都有是相當了解的。因為工作需要都是會進行編輯的。但為了提高工作效率,需要將文件與其它格式之間進行相互轉換,那么pdf
發表于 10-26 10:56
怎么把圖片jpg轉換成pdf文件呢
,安裝和啟動的過程極為迅速。迅捷JPG轉為PDF轉換器,獨立的PDF文件解析核心技術,使得軟件本身可以更好地對文件內容進行深度識別,并最終
發表于 10-26 15:49
將pdf轉換成jpg格式的快速轉換方法
鐘將pdf轉換成jpg。 這里向大家推薦一個非常簡單而又實用的方法,那就是使用迅捷PDF在線轉換器這個軟件就可以搞定了。這款軟件可以完美的
發表于 10-28 11:27
怎么將pdf轉換成ppt格式的文件
目前我們處理的文件大部分是的PDF格式的,遇到這類文檔,大家已經能熟練的掌握轉換的技巧了,不過那些剛進公司的小白就不行了。那么今天就還是給大家介紹下怎么將
發表于 11-02 10:24
簡單易掌握的pdf轉換成word格式的方法
支持多種格式轉換的軟件,可將Word/Excel/PPT、JPG等格式的文件快速轉換成PDF,也支持PDF轉Office、圖片、TXT、
發表于 11-03 11:04
最詳細的方法教你如何將pdf轉換成word格式
本帖最后由 1714472470 于 2016-11-18 11:51 編輯
在說過了那么多文件格式的轉換方法后,發現大家最常用到的還是pdf轉換成word格式,但是很多朋友
發表于 11-18 11:03
將pdf轉換成可編輯的ppt轉換器
為了完成教學的目的,有時需要把拷貝出來的PDF文件轉換成可以編輯的PPT格式幻燈片,然后在PPT文檔中進行修改編輯內容便可。今天就為大家介紹一款專業的PDF
發表于 03-17 15:11
迅捷CAD編輯器如何將CAD轉換成PDF
,和光柵文件的導入,支持創建對dwg和dxf文件的關聯。完美的支持CAD圖形中文字體的顯示。用最簡單的操作將CAD轉換成PDF。 一、軟件
發表于 03-28 14:04
請問如何使用CAD手機看圖軟件將DWG格式圖紙文件轉換成PDF格式?
在使用CAD手機看圖軟件修改好CAD圖紙后想要發送給其他人,怎么將手機中DWG格式圖紙文件轉換成PDF格式呢?接下來就給大家介紹一下CAD手機看圖軟件浩辰CAD看圖王手機版中將DWG格
發表于 06-24 13:46
如何將PDF轉換成CAD的DWG文件或DXF文件?
將PDF格式的圖紙進行二次編輯,那么需要將PDF轉換成DWG/DXF格式的。下面我給大家介紹幾款此類軟件。 注意:但是在轉換前先確認你的
發表于 10-24 16:21
?5876次閱讀
Word如何轉換成PDF文件?Word與CAD互轉圖文教程免費下載
經常做設計的相關的伙伴們可能都知道Word怎樣轉換成PDF文件,畢竟在很多的辦公軟件都是可以相通的,我們在設計中,不光單單是為了設計,有時候,為了需要,也會將world轉換成
發表于 09-28 08:00
?0次下載
將html文件轉換成pdf示例
評論