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字体或其他样式要求比较严格的使用场景,小伙伴可以试试,如果有不懂的地方 可以留言!!!



}

猜你喜欢

转载自blog.csdn.net/nandao158/article/details/105812976