1

在我的 Qt 应用程序中,我想输出 PDF 报告。对于特定客户,报告应该可以稍微修改。我的想法是使用 QPrinter 从渲染的 QWebkit-view 创建 PFD。渲染的 QML 也可以工作。对我来说,创建具有非常灵活的布局自定义(CSS/HTML 或 QML)的 PDF 报告非常简单,无需学习/在项目中引入额外的软件包。

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

  1. 它应该能够显示最好从客户端应用程序提供的图像作为 QImage/QPixmal。
  2. 它应该能够接受所有变量作为 QMap 或从 Postgres DB 查询值。
  3. 它应该可以作为代码嵌入或作为库链接

编辑 已经检查:

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

2 回答 2

2

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

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

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

于 2013-08-12T16:19:07.343 回答
2

我认为没有现成的东西存在,否则它会众所周知,因为一个问题本身很常见。作为先前的答案,我还编写了自己的生成器。它不是开源的,我想。

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

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

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

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

于 2013-08-12T20:52:25.100 回答