QPrinter QPrintDialog QPrintPreviewDialog 打印PDF文件
近期做了一个项目,这个项目需要调用QT 的通用接口实现跨平台打印pdf文件,遇到了一些坑特此纪录一下。
1, QPrinter printer(QPrinter::ScreenResolution);//构造打印对象
printer.setPageSize(QPrinter::A4); //页面设置
printer.setOrientation(QPrinter::Portrait);
2,QPrintDialog printDialog(&printer); //构造打印对话框
//QPrintPreviewDialog previewDialog(&printer);
//QObject::connect(&previewDialog,&QPrintPreviewDialog::paintRequested, widgetPdf, &WidgetPdf::onPrintPreview); //previewDialog.exec();
if(printDialog.exec()) //最重要的一点,打印文件要读出文件内容,分页绘制至Printer
{
widgetPdf->onPrintPreview(&printer); //绘制内容
}
3,绘制内容显示
void WidgetPdf::onPrintPreview(QPrinter *printer)
{ printer->setWinPageSize(pageCount); QPainter painter(printer);
unsigned char *pageData = NULL;
painter.begin(printer);
for(int index = 0;index <pageCount;index++)
{
QPixmap pixmap;
BASE_PAGE pageHandel = 0;
BASE_DOC_LoadPage(docHandle,index,&pageHandel);
BASE_PAGE_Render(pageHandel,pageWidth,pageHeight,&pageData);
QImage image(pageData,pageWidth,pageHeight,QImage::Format_RGB32);
pixmap = pixmap.fromImage(image);
QRect rect = painter.viewport();
QSize size = pixmap.size();
size.scale(rect.size(), Qt::KeepAspectRatio);//此处保证图片显示完整
painter.setViewport(rect.x(), rect.y(), size.width(), size.height());
painter.setWindow(pixmap.rect());
painter.drawPixmap(0,0,pageWidth,pageHeight, pixmap);
if(index < pageCount-1)
printer->newPage();
}
painter.end();
}
QPrinter QPrintDialog QPrintPreviewDialog 打印PDF文件相关推荐
- 【第六篇】Qt学习与使用---在qt中打印PDF文件(不是生成PDF)
1.目的 如题,打印pdf文件中的内容. 2.思路 (1)思路1:可以通过Poppler类来读取pdf中的内容,并转化成图片,再 打印这些图片.这个方法的瑕疵是,需要在打印的时候准确的写出一页图片在A ...
- java生成pdf_Java实现PDF文件生成并且打印pdf文件 demo
## Java实现PDF生成并且打印pdf文件(附demo) #### 目录: 0. 效果预览 1. 准备环境 2. Java如何调用打印机进行打印 3. Java如何生成pdf打印文件 4. 实现p ...
- 网页上打印PDF文件
在网页上打印pdf文件,有两种方式:可以是在java后端通过调用iText PDF的jar包的方法实现PDF打印;也可以在前端调用lodop插件打印pdf文件. PDF文件的内容可以是表格,图片等等, ...
- net中c#教程 如何创建、合并、下载、打印pdf文件?
net中c#操作pdf文档,有很多插件可以使用,这里推荐其中的一个,名字叫iTextSharp,Nuget直接搜就可以找到.它能够创建与合并pdf文件.至于下载和打印pdf文件,则是通过其他方法完成的 ...
- java打印pdf_java操作打印机打印pdf文件
小弟近来用java开发系统需实现一个程序操控打印机直接打印pdf文档的功能,查阅API丛书后编写的代码如下: import javax.print.*; import javax.print.attr ...
- PowerBuilder 10 下调用FoxitPDFSDK_AX_Pro.ocx浏览打印PDF文件
在PowerBuilder中浏览.打印PDF文件,该代码已经在PB 10.5版本下测试可用. 使用的控件为FoxitPDFSDK_AX_Pro.ocx,该控件无水印,亲测可用. 具体操作步骤如下: 1 ...
- java 连接打印机实现打印PDF文件的功能
java 连接打印机打印PDF文件 需求背景是导出excel并且打印,excel导出设置和转PDF网上有很多资料,本文只记录连接打印机打印PDF的部分. 1: 需要引入maven配置 <depe ...
- 【项目管理】Java使用pdfbox调用打印机打印PDF文件
[项目管理]Java使用pdfbox调用打印机打印PDF文件 1.项目前言 2.项目实现 3.关键代码 4.效果演示 5.问题处理 5.1 安装对应字体 5.2 修改对应代码 系统:Win10 Jav ...
- VBA PowerShell批量打印PDF文件
循环打印Excel中的PDF文件 Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "Shell ...
最新文章
- html5网站测试工具,基于HTML5网页的前端技术测试技巧
- 网站SEO优化中几个不为人知的小细节分享!
- linux 安装centos
- SAP Spartacus B2B 页面 Disable 按钮的显示原理
- centos升级之共享文件夹
- 安卓USB开发教程 三 USB Accessory
- 447. Number of Boomerangs
- SpringBoot 自定义线程池
- 求链表的倒数第m个元素
- nodejs连接池连接mysql
- mongodb 的基本函数语法封装
- docker pipework
- 非专业人士观点(3)不要假如
- java逆向框架_JOOQ框架学习(1):逆向编译生成代码
- 高斯过程回归预测Matlab简单实现
- 解决win10下 Virtual Box USB功能无法使用问题
- Java爬取糗百段子
- 计算机网络(3)——三种常见的数据交换技术
- java家庭收支记账软件-day01
- 一个10年IT技术人的历程-Java架构师的演变
热门文章
- Levenshtein Distance算法JAVA代码与示例图解
- 天文学家对外星文明的分类如何指导我们探索AI?
- Thinkpad 电池设置 (Ubuntu)
- 小白专用微信公众号网页授权通过code获取用户信息
- JS+Flash图片轮换/切换--上下滑动效果
- 外星人m15r7键盘失灵问题解决
- 3th exercise逻辑斯特解决多分类问题
- Linux【命令篇】—— Linux操作系统常用指令大全
- [ 数据结构-C实现 ] 用堆解决TopK问题
- MySQL5.7.26错误问题 mysqld.exe: Error while setting value ‘STRICT_TRANS_TABLES, ...‘ to ‘sql_mode‘