Wicket 1.5 - 浏览器 Pdf 从 freemaker 模板打印到字节 []

Posted

技术标签:

【中文标题】Wicket 1.5 - 浏览器 Pdf 从 freemaker 模板打印到字节 []【英文标题】:Wicket 1.5 - Browser Pdf Print from freemaker template to byte[] 【发布时间】:2012-10-02 06:20:17 【问题描述】:

我正在寻找一种简单的方法来允许我的应用程序的用户打印我在单击按钮后生成的 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】:

使用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 更灵活一些。

【讨论】:

以上是关于Wicket 1.5 - 浏览器 Pdf 从 freemaker 模板打印到字节 []的主要内容,如果未能解决你的问题,请参考以下文章

Wicket:刷新浏览器时未加载对 HTML 或 Java 源的更改

Wicket:从内部表单访问字段

java wicket链接onclick代码在第二次点击时不执行

(Apache Wicket) 从 js 函数设置 java 属性

嗨,我目前正在将 wicket 应用程序从 1.5.3 升级到 6.30.0,但是我收到错误并且登录页面没有被实例化

Java:如何将值从javascript设置为wicket组件文本字段