将Freemarker转换为PDF

Mil*_*daD 7 java pdf template-engine freemarker itext

我正在使用freemarker设计报告,我有一个问题,我需要PDF格式的处理输出.

我想要做的是将HTML + CSS fremarker模板传递给freemarker引擎,并将处理后的HTML作为PDF输出.我目前遇到的问题是如何将已处理的freemarker转换为PDF

    try {
        Configuration cfg = new Configuration();
        Template tpl = cfg.getTemplate("example.ftl");
        OutputStreamWriter output = new OutputStreamWriter(System.out);

        Map testHashMap = new HashMap();
        testHashMap.put("test", "testValue");

        tpl.process(testHashMap, output);

    } catch (Exception e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

在互联网上搜索时,我无法找到有关此主题的任何信息,但我发现了iText框架

try {
    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document doc = builder.parse(new StringBufferInputStream(buf.toString()));
    ITextRenderer renderer = new ITextRenderer();
    renderer.setDocument(doc, null);
    renderer.layout();
    OutputStream os = response.getOutputStream();
    renderer.createPDF(os);
    os.close();
} catch (Exception ex) {
    ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是如何将这两个代码片段组合起来生成pdf?

所有帮助都非常感谢

此致,MilindaD

Ric*_*ssu 5

我认为最好使用两个不同的管道,并将它们视为同一模型的两个不同视图.

数据 - > Freemarker transfomer - > HTML

数据 - > iText变压器 - > pdf

或者您可以在html上使用XSLT并像Apache FOP一样使用XSL-FO,但这对我来说似乎有些过分.


Shi*_*pta 5

建议使用iText,因为它受AGPL许可。

\n\n

如果您根据 AGPL 许可获得的软件提供服务,则需要提供对该服务的完整软件的免费访问(可能存在 \xe2\x80\x9cmere 聚合\xe2\x80\x9d 概念隐含的限制) 。

\n\n

您可以将openhtmtopdf用于商业目的,也可以免费使用,因为它受 LGPL 许可。

\n