QT中QPrinter打印功能
这两天处理了一下QT程序连接网络打印机执行打印的功能
描述:QT程序运行在Linux、Windows平台,软件运行过程中可根据用户的需要生成一系列的报表,现在需要将这些数据自动布局成报表的格式,并实现一键打印功能,如下:点击打印报表即可跳转到打印预览界面,并将当前界面的信息进行布局打印
在windows下QPrinter使用系统的打印驱动程序,能够很方便的使用打印功能
在Linux下,先通过QPrinter实现将打印数据(表格、图片、标题、标注等)生成PDF文件,再将PDF上传至PC执行打印功能(使用TFTP等实现传输文件功能)
此过程中的打印文件布局,根据自己的需求进行动态调整和算法优化
遇到问题:
1、将所有数据布局在一个widget上,通过 render(&painter);进行打印,只能打印第一页
解决方法:通过算法将widget分成多页,当打完一页之后,调用 newpage()函数产生新的一页进行打印。
2、使用如下方式一页一页的绘制PDF,以解决Linux没有打印机驱动的问题
//获取界面的图片并绘制
QPixmap m_pixmap = QPixmap::grabWidget(m_deviceInfoForm, m_deviceInfoForm->rect());
painter_pixmap.drawPixmap(0, 0, m_pixmap);
3、Linux下生成的PDF与Windows下生成的PDF效果不一致,如下图:
上图是使用系统默认分辨率的情况,很明显两者显示的表格列数、行数等均不一致(此处忽略字体、背景色带来的细微问题,windows使用自带的字体,Linux下使用移植的文泉驿正黑字体)
下图是调整分辨率之后的两者的情况对比
解决方法:本人由于没有这方面的经验,一直未考虑系统打印分辨率的问题,因此一开始直接使用系统的默认分辨率,结果在相同的代码在Linux和windows系统下显示情况不一致。找了半天资料发现 resolution和setresolution函数,通过resolution()输出分辨率可知
windows下为96
Linux下为72
OK,找到了问题原因,下面就通过setresolution()解决问题咯,将分辨率固定位96,大功告成!!!
期间遇到过一个小问题:
原因是一激动将setresolution()函数写在了之后
功能实现了,下一步继续根据需求制定、优化算法咯。
欢迎大家指教,希望大家喜欢
路漫漫其修远兮,同志仍须努力
QT中QPrinter打印功能相关推荐
- qt的qprinter打印功能怎么设置打印时字体大小_如何打印一份成绩单
学校考试之后,要看自己班的成绩,要打印自己班的成绩. 需要进行以下操作,设置好后,只打印自己班的那页就可以了. 惯用WPS,本文一些方法可能仅适用WPS.因为EXCEL的打印预览我没有掌握. 一.冻结 ...
- linux下qt打印功能如何实现,Qt Graphics-View的打印功能实现
本文来研究一下Qt Graphics-View的打印功能实现. 在Qt的官方文档中介绍了Graphics-View的打印相关内容. Qt中对打印的支持是有一个独立的printsupport模块来完成的 ...
- Android 各层中日志打印功能的应用
Android 各层中日志打印功能的应用 1. HAL层 头文件:#include <utils/Log.h> 对应的级别 打印方法 VERBOSE LOGV() DEBUG LOG ...
- vue中实现打印功能的方法与注意事项
vue中实现打印功能的方法与注意事项 一.使用方法: 1. 在HTML中 2. 在VUE项目中 二.问题总结 1. 设置打印方向 2. 设置打印高度 1. 单张打印 2. 循环打印 3. 获取打印操作 ...
- VUE中实现打印功能插件—vue-easy-print
话不多说直接上代码 1.安装插件:注意版本号 npm install vue-easy-print --save 我用的是0.0.8版本 npm install vue-easy-print@0.0. ...
- 鼎新Tiptop系统aemt100中增加打印功能串联aemr100功能
原先Tiptop系统aemt100设备检查记录维护作业的打印功能是灰色的,客制了一个报表aemr100,想要把两个串起来.直接在aemt100点打印就能出来. 一.在FUNCTION t100_men ...
- Qt中实现Sleep功能的简单方法
最近在QT的学习中,需要用到延时,但是在QT中没有直接的Sleep函数 ,添加 < stdlib >头文件也不能识别Sleep,查阅资料后才了解到,原来QT中没有直接的延时函数,看了很多方 ...
- SAP中实现所见即所得的打印功能操作方法
用户SAP中的打印功能可以实现所见即所得: 事务ME53N打开某个采购申请:按下图选择硬拷贝: 在电脑上设置好缺省打印机: 个人设置中的缺省打印机选择前提是在SAP中进行过相关本地打印机配置: 打印完 ...
- angular中使用essence-ng2-print插件实现打印功能
在使用angular7做项目的时候,有个需求就是实现打印.百度搜索了一下,可以看到在angular中实现打印功能可以使用essence-ng2-print插件.网上也可以搜到其他的博客,但是真正用的时 ...
最新文章
- UVA10305 Ordering Tasks
- [攻防世界 pwn]——level3
- 心事一件件的了掉,希望一切都能恢复到正常
- c++中algorithm头文件、STL库简介及使用说明
- ios13 无法传参_iOS13个人热点功能频遭投诉
- 使用jquery为table动态添加行的实现代码
- python pdf转txt_Python之pdf转txt
- 驱动程序(13) 将Windriver编写的程序制成DLL供其他程序调用
- 企业微信 java_java企业微信开发之通讯同步
- Word文字怎么添加下划线
- 【Shell】 sed/tr替换换行符
- 16含参数的极限问题
- 个人面试问答题知识库(一)百面机器学习篇
- [译] 如果界面产品设计师设计实体产品
- Linux平台PPT转图片(Python)
- SGI STL的rb_tree浅析
- acwing 2058. 笨拙的手指
- JS字符串和数字相加结果是什么?
- 2022最新网盘系统源码仿蓝奏
- 公司发了期权,我被坑了吗?
热门文章
- JDK自带工具keytool生成ssl证书(web服务https配置)
- HEVC编码框架和main函数代码跟踪解读
- eclipse 启动 tomcat htt://localhost:8080 不能访问
- MAC系统IDEA快捷键大全
- 某项目性能测试断流问题排查
- 力士乐触摸屏维修VCP20.2DUN-003-PB-NN-PW
- May 7th, 10:00-11:00 am 1303, Schrodinger Maps (III) by Ioan Bejenaru
- 3.17√ 识别次读入的一个以@为结束符的字符序列是否为形如”序列1序列2“模式的字符序列 ,序列12均没有,且序列2为序列1的逆序列
- linux作为输出电脑声卡,今天终于搞定我的电脑的ALC883声卡linux驱动了
- UOJ#414. 【APIO2018】新家