在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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)