java将html转为pdf |
您所在的位置:网站首页 › html页面导出pdf › java将html转为pdf |
项目采用springboot,由于是后端导出pdf,所以用thymeleaf作为页面,后端请求页面,获取渲染后的html字符串,再导出为pdf org.springframework.boot spring-boot-starter-thymeleaf com.itextpdf itextpdf 5.5.13 org.xhtmlrenderer flying-saucer-pdf-itext5 9.0.3逻辑代码 String htmlUrl = "访问的页面"; log.info("页面路径:{}", htmlUrl); String html = OkHttpUtil.sendGet(htmlUrl); String htmlContent = html.replace("", "") .replace("", ""); log.info("html内容:\n{}", htmlContent); File pdf = FileUtil.createTempFile(id + ".pdf"); HtmPdfUtil.html2pdf(htmlContent, pdf);okhttp封装 注意,这里要将thymeleaf的部分标签替换为导出pdf支持的那种 thymeleaf标签 生成pdf需要的标签 要支持中文html中设置 导出pdf工具 import com.itextpdf.text.pdf.BaseFont; import lombok.extern.slf4j.Slf4j; import org.springframework.core.io.ClassPathResource; import org.xhtmlrenderer.pdf.ITextFontResolver; import org.xhtmlrenderer.pdf.ITextRenderer; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; @Slf4j public class HtmPdfUtil { /** * 将HTML转成PDF格式的文件。html文件的格式比较严格 * * @param htmlContent * @param pdfFile * @throws Exception */ public static void html2pdf(String htmlContent, File pdfFile) throws Exception { OutputStream os = new FileOutputStream(pdfFile); ITextRenderer renderer = new ITextRenderer(); renderer.setDocumentFromString(htmlContent); // 中文 ITextFontResolver fontResolver = renderer.getFontResolver(); ClassPathResource resource = new ClassPathResource("font/simsun.ttc"); fontResolver.addFont(resource.getURL().toString(), BaseFont.IDENTITY_H, BaseFont.EMBEDDED); renderer.layout(); renderer.createPDF(os); os.close(); } }中文字体资源路径 图片压缩 https://hacpai.com/article/1536549807193 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |