使用webkit或QML在Qt中生成报告生成器

时间:2013-08-12 14:22:38

标签: qt report

在我的Qt应用程序中,我想输出PDF报告。对于特定客户,报告应略微可修改。我的想法是使用QPrinter从渲染的QWebkit视图创建PFD。渲染的QML也可以工作。寻找我是一件非常容易的事情,就是创建具有非常灵活的布局定制(CSS / HTML或QML)的PDF报告,而无需在项目中学习/引入额外的软件包。

有人知道这样的实现吗?它应该是开源的(免费的还是商业的)? 我的愿望清单是: - )

  1. 应该能够显示优选提供的图像 客户端应用程序为QImage / QPixmal。
  2. 它应该能够 接受所有变量作为QMap或从Postgres DB中查询值。
  3. 它应该是嵌入式代码或链接为库
  4. 修改 已经检查过:

    1. QtRPT - 非常实验性和不成熟。许多魔法,用俄语注释代码。
    2. NCReport - 开源代码太旧,上次更新2007.不能用Qt4.8.4编译。新版本根据商业许可提供。商业版看起来非常成熟,有很好的文档(约100p),但我正在寻找一个呈现html / QML的软件,所以我们可以订购一个HTML开发人员来创建/维护报告。

2 个答案:

答案 0 :(得分:2)

我使用QWebKit(Qt版本5.1)制作了这种报告生成器。但它不是开源的。

最大的问题是WebKit(或我试过的任何浏览器的布局引擎)在打印时效果不佳。 CSS标准涵盖打印,但布局引擎不实现这些东西,或仅部分实现它。因此,如果您需要页眉和页脚,页码,支持多种纸张尺寸以及支持横向和纵向等功能,您必须进行大量的Google搜索和测试。几乎没有任何工作按预期工作,因此需要发明变通方法并进行丑陋的硬编码。

所以你可以使用QWebKit制作报告生成器。它不会很有趣,Qt和QWebKit的新版本很可能会破坏某些东西。所以我建议将报告生成器作为一个单独的应用程序,以便您可以为主应用程序和报告生成器使用不同的Qt版本。至少要设计报告生成器,以便以后可以根据需要将其与主应用程序分开。

答案 1 :(得分:2)

我不认为存在现成的东西,否则它将是众所周知的,因为问题本身很常见。作为以前的答案,我也写了自己的发电机。想到这不是开源的。

问题不仅在于打印(如前面的答案中所述)。只要您可以自己将整个报表拆分为页面,就可以或多或少地解决它。然后,您可以在“每页”的基础上呈现包含页眉/页脚/页码/等的报表内容,并单独打印。

主要问题是,我更容易(考虑到Qt提供的所有选项)为特定软件开发漂亮的报告生成器,而不是尝试开发非常通用的东西。在这种情况下,您必须限制自己可以在报告中使用的功能,或者引入许多“魔法”,某些假设/惯例等。

您可以为某些情况制作某种通用代码,然后您的报告都具有相似的结构(例如 - 标题 - 第一页标题 - 主页表节 - 页脚编号,所有其他页面相同,没有第一页标题) ,然后制作一个很好地将主表部分拆分成页面的算法相当简单..但是一旦你开始考虑使用图形等更复杂的场景,它就会消失。

我基于JS完成的引擎,使用基本报表原语(如表格,图形,标签)进行操作,这些原语具有一些布局属性,实际上JS代码将它们放在最终报表上。一些报告原语可以在页面之间自动分割,而不是..