Java:如何从 JSP JSF 页面生成 PDF 文件?

Posted

技术标签:

【中文标题】Java:如何从 JSP JSF 页面生成 PDF 文件?【英文标题】:Java: How can I generate a PDF file from a JSP JSF page? 【发布时间】:2010-12-30 06:29:24 【问题描述】:

我需要从 JSP JSF 页面生成 PDF。我已经搜索了网络,但我没有找到任何关于我应该如何执行此操作的示例。我需要转换整个页面,或者可能只转换该页面上的图表。

附:我也在使用 IceFaces。

【问题讨论】:

【参考方案1】:

您可能需要以下内容:

    捕获页面的 (X)html 输出。这可以通过您的 servlet 中的以下代码来完成:

    InputStream is = new URL("http://localhost/foo/page.jsf").openStream();
    

    将捕获的内容转换为 pdf。请参阅 Flying Saucer 渲染器(以及另外 - this thread)

    “发送”生成的 pdf。也就是说,只需将您的 pdf 写入(打印)到response.getOutputStream(),并设置一个 Content-Type 标头 - response.setContentType("application/pdf")

【讨论】:

【参考方案2】:

这可能是一个答案。 阅读这篇文章:Combine JSF Facelets and the Flying Saucer XHTML Renderer

【讨论】:

【参考方案3】:

最简单的方法可能是使用Filter 转换为capture the HTML 并使用合适的API 将其转换为PDF,然后从Filter 返回application/pdf 数据。 IceFaces 部分提交支持可能可用于捕获组件树输出的子集,但您可能必须研究 IceFaces HTTP 请求的详细信息才能弄清楚如何利用它。

【讨论】:

确实是这样,但并不像看起来那么简单。更多详情:***.com/questions/1963158/…【参考方案4】:

据我所知,这是不可能的。您可以使用Jasper Reports 在服务器端生成pdf。或者,您可以使用 PrintPDF 这是一个 Firefox 插件,从网络浏览器创建一个。

【讨论】:

+1 用于 jasper 报告,如果您在图表中使用 jfree 图表,jasper 报告将支持它们,您可以在您的报告/pdf 中使用相同的图表。 jasper 使用 iText 生成 PDF - 除非有其他原因使用 Jasper,否则最好直接跳到 iText

以上是关于Java:如何从 JSP JSF 页面生成 PDF 文件?的主要内容,如果未能解决你的问题,请参考以下文章

JSF 视图技术如何翻译客户端?

java jsf 如何去重新加载bean

如何修改类文件和jsp页面后不用重启tomcat就可以自动加载呢

java在jsp页面如何直接执行sql?

jsf中没有会话生成

同时使用JSF和JSP好不好[重复]