Java html轉PDF
阿新 • • 發佈:2019-01-04
在公司接到一個任務,需要有HTML和PDF兩套模板,進行功能實現。
於是我就到網上搜索資料,看看是否能夠html轉PDF。 果然搜到了很多案例,當然很多一樣的啦。
這裡我將處理demo時遇到的問題和解決方案都大概說下吧!
下面我下貼出demo:
public static boolean convertHtmlToPdf(String inputFile, String outputFile) throws Exception { OutputStream os = new FileOutputStream(outputFile); ITextRenderer renderer = new ITextRenderer(); String url = new File(inputFile).toURI().toURL().toString(); renderer.setDocument(url); // 解決中文支援問題 ITextFontResolver fontResolver = renderer.getFontResolver(); //宋體 fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //黑體 fontResolver.addFont("C:/Windows/Fonts/SIMHEI.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //楷體 fontResolver.addFont("C:/Windows/Fonts/SIMKAI.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //仿宋 fontResolver.addFont("C:/Windows/Fonts/SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //解決圖片的相對路徑問題 renderer.getSharedContext().setBaseURL("file:/D:/"); renderer.layout(); renderer.createPDF(os); os.flush(); os.close(); return true; }
關於中文支援問題:
//宋體
fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
html字型設定:
font-family: SimSun;
注意:字型一樣要是英文的:SimSun。而不是中文的 宋體。
關於中文自動換行的問題,如果使用的是原始的core-renderer.jar 包,檢索方式是遇到空格的時候進行檢索是否換行,那麼只要在需要換行的位置加一個空格,這樣的話再轉成PDF的時候檢索到“” “” 並且已經滿一行了。就會進行自動換行。
如果覺得這樣的方法比較麻煩的話,可以去下面的地址去下載 修改原始碼後的 core-renderer.jar 包,支援中文檢索換行。但是檢索的方式是一個文字檢索一次。 效率上可能會稍微滿一點,但是基本不影響啦。
資源地址:http://download.csdn.net/detail/uk8692/6632319#comment