我正在使用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();
}
在互联网上搜索时,我找不到有关此主题的任何信息,但我发现了有关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();
}
现在的问题是如何结合这两个代码片段以生成pdf?
非常感谢所有帮助
关于,MilindaD
我认为最好使用两个不同的管道,并将它们视为同一模型的两个不同的视图。
数据-> Freemarker Transfomer-> HTML
数据-> iText转换器-> pdf
或者您可以在html上使用XSLT并像Apache FOP一样使用XSL-FO,但是对我来说似乎有点过分。
我会NOT建议使用iText,因为它受AGPL许可。
如果您基于获得AGPL许可的软件提供服务,则需要提供免费使用该服务的完整软件的权限(可能会受到“单纯聚合”概念的限制)。
您可以将openhtmtopdf用于商业目的,但必须获得LGPL许可才能免费使用。