通过JSP直接以PDF格式打印动态创建的输出

时间:2014-12-17 16:30:52

标签: jsp pdf struts itext

我通过访问数据库动态地通过JSP打印报表。我正在使用Struts 框架和Java代码在Action类中。最后输出显示 JSP页面。它在屏幕上很好用,但在打印时它没有正常运行。 我只想以PDF格式而不是JSP显示报告 - > HTML格式或JSP 页面应包含PRINT IN PDF按钮/链接来完成工作。

我正在使用iText在其他模块中创建PDF文件,但这太费时间了。这次 我想在我的页面中捕获JSP输出并以PDF格式打印。如何捕获JSP 在同一个JSP页面中输出以不同格式打印?

我使用iTextrenderer但无法打印。它成功转换了一个URL 包含HTML文件,但如何从JSP输出创建InputStream并使用 iText Renderer或任何其他方法?有可能吗?请提出解决方案。

1 个答案:

答案 0 :(得分:1)

我可以在这看到你想做什么。 FlyingSaucer / XHTMLRenderer可以很好地处理HTML>然而,PDF转换并不适用于魔术:在你的情况下,涉及到很多步骤。

基本上步骤是:

  1. PDF导出Button调用Struts Action或Servlet,传递重新生成JSP所需的所有参数(即最初渲染时)。

  2. 此Action或Servlet必须调用JSP(确保设置任何所需的模型属性)并将Response写入String(而不是写入标准响应)。

  3. 将此字符串传递给XHTMLRenderer以生成PDF。

  4. 将HTMLRenderer返回的btye []流式传输到客户端。

  5. 我在这里使用一个简单的Servlet添加了一个完整的端到端示例。但是,Struts2或任何其他框架的原则是相同的,因此您应该能够根据需要进行调整。

    https://github.com/alanhay/jsp-to-pdf-exporter