在我的Qt应用程序中,我想输出PDF报告。对于特定客户,报告应略微可修改。我的想法是使用QPrinter从渲染的QWebkit视图创建PFD。渲染的QML也可以工作。寻找我是一件非常容易的事情,就是创建具有非常灵活的布局定制(CSS / HTML或QML)的PDF报告,而无需在项目中学习/引入额外的软件包。
有人知道这样的实现吗?它应该是开源的(免费的还是商业的)? 我的愿望清单是: - )
答案 0 :(得分:2)
我使用QWebKit(Qt版本5.1)制作了这种报告生成器。但它不是开源的。
最大的问题是WebKit(或我试过的任何浏览器的布局引擎)在打印时效果不佳。 CSS标准涵盖打印,但布局引擎不实现这些东西,或仅部分实现它。因此,如果您需要页眉和页脚,页码,支持多种纸张尺寸以及支持横向和纵向等功能,您必须进行大量的Google搜索和测试。几乎没有任何工作按预期工作,因此需要发明变通方法并进行丑陋的硬编码。
所以你可以使用QWebKit制作报告生成器。它不会很有趣,Qt和QWebKit的新版本很可能会破坏某些东西。所以我建议将报告生成器作为一个单独的应用程序,以便您可以为主应用程序和报告生成器使用不同的Qt版本。至少要设计报告生成器,以便以后可以根据需要将其与主应用程序分开。
答案 1 :(得分:2)
我不认为存在现成的东西,否则它将是众所周知的,因为问题本身很常见。作为以前的答案,我也写了自己的发电机。想到这不是开源的。
问题不仅在于打印(如前面的答案中所述)。只要您可以自己将整个报表拆分为页面,就可以或多或少地解决它。然后,您可以在“每页”的基础上呈现包含页眉/页脚/页码/等的报表内容,并单独打印。
主要问题是,我更容易(考虑到Qt提供的所有选项)为特定软件开发漂亮的报告生成器,而不是尝试开发非常通用的东西。在这种情况下,您必须限制自己可以在报告中使用的功能,或者引入许多“魔法”,某些假设/惯例等。
您可以为某些情况制作某种通用代码,然后您的报告都具有相似的结构(例如 - 标题 - 第一页标题 - 主页表节 - 页脚编号,所有其他页面相同,没有第一页标题) ,然后制作一个很好地将主表部分拆分成页面的算法相当简单..但是一旦你开始考虑使用图形等更复杂的场景,它就会消失。
我基于JS完成的引擎,使用基本报表原语(如表格,图形,标签)进行操作,这些原语具有一些布局属性,实际上JS代码将它们放在最终报表上。一些报告原语可以在页面之间自动分割,而不是..