birt 是否支持从数据库中读取 html 表并将其动态显示为 pdf 报告文件?

Can birt support reading html tables from database and displaying them dynamically to a pdf report file?

我遇到过这样一种情况,我必须从数据库中读取 html 数据并将其显示在 pdf 报告中。此 html 数据还包含 table 结构 <table></table> 标签和其中的其他 html 元素。以前我们使用 jasper reports 来满足我们的报告需求,但最近当我们知道 jasper 不支持上述功能时,我想知道可以使用哪种报告工具,以便它可以与 servoy 合并。 birt 是否提供此功能?

是的,BIRT 有一个文本元素,我们可以在其中将显示类型设置为 HTML。如果 html table 在数据集字段中,您只需使用 "value-of" 标记将其包含在文本表达式中,如下所示:

<VALUE-OF format="HTML">row["htmlTableField"]</VALUE-OF>

PDF 格式考虑了这些 html 元素,包括大多数简单的样式设置,例如背景颜色、文本对齐、边框等。

AFAIK none 的知名报告工具确实支持这一点,尽管在 BIRT 中它可以工作 "somehow" - 但不够好,无法使用。 原因很简单,我认为:一个报告工具必须结合一个完整的浏览器引擎,如 WebKit 或其他来实现这一点,因为它必须 "understand" 其分页算法的结构。

通常使用 html 可以很好地呈现报告。

有一些技巧可以在 BIRT 中正确显示 html。

您可以使用 Dynamic Text 元素并设置为 html 或自动。

这里有一些处理自由格式文本的技巧..

确保您的 xml 有效,我建议更换换行符,否则您可能会遇到 rptdocument 无法导出的情况。

此外,如果可能,在使用 运行 + 渲染时将它们保留在自动布局中。分页符实际上可能在 运行 上计算一次,然后在渲染时再次计算。您可能会遇到固定问题。当使用 运行() 阶段时,在 Web 查看器或 rptdocument 中,页面可能会尝试在中断页面之前显示所有 html。然后,当渲染为 pdf 时,中断的应用方式不同,布局固定。