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

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

附:我也在使用 IceFaces。

【问题讨论】:

    标签: java pdf jsf icefaces


    【解决方案1】:

    您可能需要以下内容:

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

      InputStream is = new URL("http://localhost/foo/page.jsf").openStream();
      
    2. 将捕获的内容转换为 pdf。请参阅 Flying Saucer 渲染器(以及另外 - this thread

    3. “发送”生成的 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 请求的详细信息才能弄清楚如何利用它。

        【讨论】:

        【解决方案4】:

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

        【讨论】:

        • +1 用于 jasper 报告,如果您在图表中使用 jfree 图表,jasper 报告将支持它们,您可以在您的报告/pdf 中使用相同的图表。
        • jasper 使用 iText 生成 PDF - 除非有其他原因使用 Jasper,否则最好直接跳到 iText
        猜你喜欢
        • 1970-01-01
        • 2020-12-15
        • 1970-01-01
        • 2011-04-04
        • 2018-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多