wkHtmlToPdf 的簡單使用我在這裏就不說了,今天主要說一下 設置 自定義字體問題,我經過很多次的測試,終於成功。
1、上代碼
import java.io.File; import java.io.IOException; public class WkHtmlToPdf { private static final String toPdfTool = "D:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe"; private static final String toPdfCssFangSong = "E:\\template\\toPdfCssStyle\\style_fangsong.css";
/** 主體方法生成 pdf */ public static void testConvert( String srcPath, String destPath){ logger.info("css樣式在服務器上存的路徑[{}]",toPdfCssFangSong); String pageSize = "A4"; File file = new File(destPath); File parent = file.getParentFile(); if (!parent.exists()){ parent.mkdirs(); } StringBuilder cmd = new StringBuilder(); cmd.append(toPdfTool).append(" ");//wkhtmltopdf 的安裝地址 cmd.append("--page-size "); cmd.append(pageSize).append(" "); cmd.append("--margin-top "); cmd.append("24mm").append(" "); cmd.append("--margin-bottom "); cmd.append("15mm").append(" "); cmd.append("--user-style-sheet "); cmd.append(toPdfCssFangSong).append(" ");//爲生成的 pdf 文檔設置自定義樣式,非常重要!!! cmd.append("--disable-smart-shrinking ");//這個參數一定要加上,加上頁面就不縮小了,會正常比例顯示 cmd.append(srcPath).append(" "); cmd.append(destPath); try { Runtime.getRuntime().exec(cmd.toString()); }catch (IOException e){ e.printStackTrace(); } }
public static void main(String[] args) { try { //設置紙張大小: A4, Letter, etc. String pageSize = "A4"; //需要生成PDF的URL,這樣也可以是頁面的本地地址 String srcPath = "E:\\buildWord\\2020\\2020-04-28\\C1101072020100816\\協議書.html"; String destPath = "E:\\buildWord\\2020\\2020-04-28\\C1101072020100816\\協議書.pdf"; testConvert(srcPath, destPath); } catch (Exception e) { e.printStackTrace(); } }
2、style_fangsong.css 是自定義的樣式文件,根據根據所需要的字體或者其他樣式,自定義設置,格式樣式如下: @font-face{font-family: "仿宋";src:url("C:\\Windows\\Fonts\\simfang.ttf")} * { font-family: 仿宋 !important; font-weight:normal !important; } 這種設置,主要針對對 pdf字體或其他樣式要求比較嚴格的使用場景,小夥伴可以試試,如果有不懂的地方 可以留言!!! }