使用 itext、flying-saucer 实现html转PDF

论坛 期权论坛 脚本     
匿名技术用户   2020-12-29 00:15   14   0

itext-2.1.7高于此版本已经更新为AGPL授权,不建议使用。

所需jar包:

使用maven就简单多了,只需将一下配置加入poom.xml即可

<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>flying-saucer-pdf</artifactId>
    <version>9.0.8</version>
</dependency>

非maven,请自行去以下网站下载相应的jar:

itext:https://github.com/itext/itextpdf

所需 iText-2.1.7.jar

flying-saucer:https://github.com/flyingsaucerproject/flyingsaucer

所需:core-renderer.jar、flying-saucer-pdf.jar


以下是实现代码:

html 文件 转换 PDF

String inputFile = "D:/testHtml.html";
String outFile = "F:/outPdf.pdf";
OutputStream os = new FileOutputStream(outFile);
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
String url = new File(inputFile).toURI().toURL().toString();
renderer.setDocument(url);
renderer.layout();
renderer.createPDF(os);
os.close();

html 字符串 转换 PDF
ITextRenderer renderer = new ITextRenderer();  
ITextFontResolver fontResolver = renderer.getFontResolver();  
fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
os = new ByteArrayOutputStream();
String htmlstr = "你的HTML字符串";
renderer.setDocumentFromString(htmlstr);
renderer.layout();  
renderer.createPDF(os);

如果你需要动态替换HTML里面的数据,推荐使用freemarker

实现代码:

StringTemplateLoader templateLoader = new StringTemplateLoader();
templateLoader.putTemplate("模板,也就是你的HTML", sb.toString());
Configuration config = new Configuration();
config.setTemplateLoader(templateLoader);
Template template = config.getTemplate("模板,也就是你的HTML");
StringWriter writer = new StringWriter();
template.process("需要替换数据所对应的参数", writer);

如有不明白的,请留言!

转载请注明出处!!!!!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP