如何将javascript生成的报告导出为pdf?

时间:2010-05-09 15:37:54

标签: java javascript

我为我的项目制作了一个带有javascript的报告引擎...... 问题是打印.. 虽然使用分页符和css我可以生成一个好看的报告,我想将该报告导出为pdf,以便更好地打印,不包括网址,页面标题和浏览器添加的其他内容。 请注意Chrome中没有页面设置!!!

我在服务器端使用java。

我认为通过ajax以某种方式发送报告的Html并返回pdf报告的URL可能...... 我正在寻找一个好的工具 谢谢

3 个答案:

答案 0 :(得分:1)

如果您确实发送了数据服务器端, iText 是一个很棒的免费开源库,用于从Java生成PDF。

我做的是在将响应的内容类型设置为application/pdf并将Content-Disposition标头设置为attachment; filename=foo.pdf之后直接生成报告到响应流(如果我想要提示浏览器它应该提供下载)或inline; filename=foo.pdf如果我想提示浏览器在浏览器的UI中显示它。

对于你正在做的事情,也许你想写一个文件服务器端,以防有人请求具有相同参数的报告的另一个副本等,但如果没有,直接写入servlet的OutputStream将是要走的路。

(警告:我不得不承认没有真正使用过iText的Java版本,但仅仅因为我还不需要从Java生成PDF。我正在使用iTextSharp,.Net进行上述操作iText的端口,来自服务器端的Javascript [是的,真的],它可以很好用。)

答案 1 :(得分:1)

我宁愿使用JasperReports根据数据在服务器端生成报告。

您可以将html发送到服务器端并使用iText或JasperReports或OpenOffice api生成pdf。

答案 2 :(得分:1)

这取决于您在Javascript解决方案上投入了多少资金。通常情况下,我同意生成报表服务器端要好得多,因为使用Jasper或Docmosis或其他一些选项可能会有更多选项,可能是更易于维护的结果。

您可以将页面的html发送回服务器,并在那里有一个可以读取并将其呈现为PDF的系统,但是您已经完成了比您需要更多的往返,这听起来像是一个更难,更脆弱的方式来制作PDF。