java 代碼 用 wkHtmlToPdf 工具生成 pdf 文檔 並 設置自定義 字體

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字體或其他樣式要求比較嚴格的使用場景,小夥伴可以試試,如果有不懂的地方 可以留言!!!



}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章