java将html转成pdf

需要的依赖:compile ('org.xhtmlrenderer:flying-saucer-pdf:9.0.7')

public static void main(String[] args) throws FileNotFoundException {
try {
//图片是url或者base64都可以,注意html的font-family和java指定的一样
String str="<html><head><mata charset=\"UTF-8\"/><title></title><style>body{font-family:FangSong;font-size:14.5px}.pclass{text-indent:2em}</style></head><body><p><img src=\"https://zhtest.unee.com.cn:8083/ftp/images/o2o/AAA/123_1548234383085.png\" style=\"width: 485.778px;\" data-filename=\"aa.jpg\"/></p><h1>关于违规通知函</h1><p>阁下:</p><p class=\"pclass\">您好,我处工作人员在进行巡查时发现您装修过程中出现如下问题:</p><img src=\"https://127.0.0.1:8080/ftp/images/o2o/AAA/123_1548234383085.png\" style=\"width: 48.78px;\" data-filename=\"aa.jpg\"/></body></html>";
OutputStream os = new FileOutputStream(new File("F:\\example.pdf"));

ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(str);

//以下两行是因为字体不展示,要自己去下载ttf字体,不知道名字可以百度搜字体的英文名称,然后下载即可,html里一定要设置字体
ITextFontResolver fontResolver = renderer.getFontResolver();

fontResolver.addFont("/fonts/FangSong.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

renderer.layout();
renderer.createPDF(os);
os.close();
} catch (Exception e) {
e.printStackTrace();
}

}

posted @ 2022-08-24 11:26  幽魂~~  阅读(413)  评论(0编辑  收藏  举报