如何在Java中使用自动表格布局创建PDF

时间:2014-05-23 06:44:07

标签: java pdf tablelayout

在我的应用程序中,用户可以通过选择要显示顺序的列来配置自己的表格布局以在屏幕上显示数据。现在我想让我的用户可以将这些表导出为PDF。表格应完全填充页面宽度,列应根据表格中的内容调整其大小,例如HTML表格。

您可以为此推荐图书馆或工具链吗?

我检查了Apache FOP,但是他们的fo:表不支持自动表格布局。动态创建Jasper报告似乎也不合适,因为我必须在那里指定确切的列宽。那么,有没有人知道如何实现这个目标?

具有商业友好许可证的开源解决方案,如Apache或LGPL首选。

答案:目前没有任何工具可以满足我的期望,因此我将此问题标记为已解决。

1 个答案:

答案 0 :(得分:0)

iText可能就是您所寻找的http://itextpdf.com/。版本2.1.7可以在GPL lisence下免费使用,有关详细信息,请参阅此问题What is latest version of itext that is not AGPL?。它将适合您的需要,我建议在他们的网页上使用他们的代码示例。大多数适用于版本2.1.7,尽管它目前在版本5上。

我建议你看看飞碟。它是一个开源项目,使用iText PDF作为其核心渲染引擎,但它允许您将非常动态的xhtml文件定义为渲染媒体。

单独使用iText使用FS + iText的好处

  • 允许更改或新产品更快的开发周期
  • 使用专门为其构建的语言(HTML + CSS)非常容易添加一致且复杂的样式
  • 您可以使用相同的HTML代码渲染PDF,以便在线查看(如果使用网络应用程序)
  • 可以使用java.awt.Graphics类将图形渲染到PDF上,这意味着您可以将任何图形库与FS集成,以将图形等对象绘制到PDF上。

缺点:

  • 虽然它在渲染现代CSS样式方面做得很好但并不完美。例如,当我使用它时,项目需要border-radius样式才能使用。它不是我必须实现它。
  • 渲染时间和内存消耗增加(虽然我发现它非常快且内存效率很高)
  • 您项目中的更多图书馆。

如果您不感兴趣,请参阅FS网站上的一个例子。 https://github.com/flyingsaucerproject/flyingsaucer/blob/master/flying-saucer-examples/src/main/java/PDFRender.java

相关问题