Qt数据库应用3-数据打印到pdf

Qt数据库应用3-数据打印到pdf,第1张

自从数据可以导出到xls,又有客户提出了不同的需求,比如既然可以将数据导出到xls,那是否可以导出到pdf文件呢?因为xls打开以后用户可以修改数据造假之类的,而pdf默认是不可编辑的,除非借助专业的工具,所以如果想要限定用户导出数据不能被更改,那导出pdf是最佳选择。写程序往往都是这样,一步步慢慢增加,随着用户需求的增加,程序量也越来越多,轮子组件也越来越多。往往客户提需求的时候,一定要认真聆听,尤其是一线用户,实际使用的用户,尽管有些不合理的需求,但是能满足就尽量满足,毕竟客户就是上帝。

在Qt中要导出到pdf必须要用到qprinter类,相当于这些数据是打印到pdf的,所以确切点是叫打印到pdf文件,而不是导出数据到pdf,格式这块由于采用的是打印,所以需要用html嵌套table表格的形式来打印,支持的格式就有限了,一般可以设置字体大小、颜色、边框、对齐等,尽管是html,但是也是支持有限的html格式,这点要特别注意。现在的qt版本貌似单独将pdf提炼出来成了独立的模块,功能更强大。

结构体支持的参数:

开始 菜单--打印机和传真-- 空白处 右击(不要选中打印机)--服务器属性--新建---输入你需要的纸张大小--输入一个名称,如111(方便你自己查找)---点保存,即可

然后,选中你的打印机--属性--打印首选项--高级--纸张规格--选择你刚才保存的“111”点应用;在返回 属性 -- 设备设置--选择纸张大小为“111”,点应用…………就可以了!!

以后再打印这种格式,就不用每次都要调整纸张大小!!

如果要打印其他纸张规格,再改回去就行了!!

这里PDF打印不是指在窗口中输入内容然后打印出来,也不是唤醒PDF阅读器的打印预览页面,而至获取到PDF或者打开本地PDF文件,然后打印

获取到一段 PDF的二进制流,将二进制流的PDF进行选择打印机打印,这里也可以作为打开本地PDF文件打印

Qt 自带的QPrinter,支持QTextDocument文档打印,支持html打印,也支持 QPixmap打印,这里思路是将PDF逐张转成QImage,然后再转成QPixmap打印。

尝试了poppler和mupdf两种第三方包,发现都需要本地编译,mupdf官网的描述更加简单,后来找到了poppler已经编译好的包,将相关头文件以及 dll 加入项目。

loadFromData和load分别对应转换本地文件以及二进制流

参考资料

QtMupdf

pdf 环境搭建poppler+qt5


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11391775.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存