Wicket 1.5 - 浏览器Pdf从freemarker模板打印到byte []

时间:2012-10-11 14:34:05

标签: pdf wicket freemarker

我正在寻找一种简单的方法来允许我的应用程序的用户打印我点击按钮后生成的PDF。在Button的“onClick”中,我进行了一些操作,然后调用这样的方法

Map<String,Object> m = new TreeMap<String,Object>();
m.put("paper", paperObject);
Template t = getConfiguration().getTemplate(TEMPLATE_NAME_CONSTANT);
String html = FreeMarkerTemplateUtils.processTemplateIntoString(t,m);
ByteArrayOutputStream os = HtmlToPdfRenderer.print(html);
return os.toByteArray();

我不想离开原始页面。

感谢。

1 个答案:

答案 0 :(得分:0)

使用ResourceLink代替按钮。将它传递给ByteArrayResource的自定义子类,如下所示:

new ResourceLink("id", new ByteArrayResource("application/pdf", null, filename) {
    @Override byte[] getData(Attributes att) {
        // generate your PDF here
        return byteArray;
    }
}

点击此链接将生成PDF并将其发送到浏览器。

或者,创建一个AbstractResource而不是ByteArrayResource的子类,因为AbstractResource更灵活。