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 文件?的主要内容,如果未能解决你的问题,请参考以下文章