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

Java:如何从JSP JSF页面生成PDF文件?,java,pdf,jsf,icefaces,Java,Pdf,Jsf,Icefaces,我需要从JSP JSF页面生成PDF。我已经在网上搜索过了,但是我没有找到任何应该如何做的例子。我需要转换整个页面,或者只转换页面上的图表 另外,我也在使用IceFaces。据我所知,这是不可能直接实现的。您可以使用在服务器端生成pdf。或者,您可以使用firefox插件从web浏览器创建一个插件。最简单的方法可能是使用,并使用合适的API将其转换为PDF,然后从过滤器返回应用程序/PDF数据。IceFaces部分提交支持可能用于捕获组件树输出的一个子集,但您可能需要研究IceFaces HTT

我需要从JSP JSF页面生成PDF。我已经在网上搜索过了,但是我没有找到任何应该如何做的例子。我需要转换整个页面,或者只转换页面上的图表


另外,我也在使用IceFaces。

据我所知,这是不可能直接实现的。您可以使用在服务器端生成pdf。或者,您可以使用firefox插件从web浏览器创建一个插件。

最简单的方法可能是使用,并使用合适的API将其转换为PDF,然后从
过滤器返回
应用程序/PDF
数据。IceFaces部分提交支持可能用于捕获组件树输出的一个子集,但您可能需要研究IceFaces HTTP请求的详细信息,以了解如何利用这些信息。

您可能需要以下内容:

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

    InputStream is = new URL("http://localhost/foo/page.jsf").openStream();
    
  • 将捕获的内容转换为pdf。请参见渲染器(以及其他-)

  • “发送”生成的pdf。也就是说,只需将pdf写入(打印)到
    response.getOutputStream()
    ,并设置内容类型头-
    response.setContentType(“应用程序/pdf”)

  • 这可能是一个答案。
    阅读本文:

    +1 for jasper reports,如果您使用jfree chart for您的图表,jasper reports将支持它们,并且您可以在报告中使用相同的图表/pdf。jasper使用iText生成pdf-除非有其他原因使用jasper,最好直接跳到iText这确实是一种方式,但这并不像看上去那么简单。有关更多详细信息: