itext用html方式导出pdf

来源:互联网 发布:港股模拟软件 编辑:程序博客网 时间:2024/05/19 03:17

依赖:

<dependency>            <groupId>org.freemarker</groupId>            <artifactId>freemarker</artifactId>        </dependency>        <dependency>            <groupId>org.xhtmlrenderer</groupId>            <artifactId>flying-saucer-pdf</artifactId>            <version>9.0.9</version>        </dependency>        <dependency>            <groupId>com.itextpdf</groupId>            <artifactId>itextpdf</artifactId>            <version>5.5.9</version>        </dependency>

代码:

public class TestIText {    public static void main(String[] args) throws IOException, TemplateException, DocumentException {        String htmlStr = getHtmlContent("bbc.ftl", new Object());        try (OutputStream os = new FileOutputStream(new File(UUID.randomUUID().toString()));) {            createPDF("/static/simhei.ttf", htmlStr, os);        }        System.out.println(htmlStr.toString());    }    private static void createPDF(String fontPath, String htmlStr, OutputStream os)            throws IOException, DocumentException {        ITextRenderer renderer = new ITextRenderer();        ITextFontResolver iTextFontResolver = renderer.getFontResolver();        iTextFontResolver.addFont(                fontPath,                BaseFont.IDENTITY_H,                BaseFont.NOT_EMBEDDED        );        renderer.setDocumentFromString(htmlStr);        renderer.layout();        renderer.createPDF(os);    }    private static String getHtmlContent(String name, Object o) throws IOException, TemplateException {        Template template = getTemplate(name);        StringWriter sw = new StringWriter();        template.process(o, sw);        return sw.toString();    }    private static Template getTemplate(String name) throws IOException {        Configuration config = new Configuration();        config.setClassForTemplateLoading(TestIText.class, "/static");        return config.getTemplate(name);    }}
别忘了自己弄个ttf字体和ftl模板。

原创粉丝点击