Qt下利用Qprinter或者QPdfWriter导出文件为PDF
来源:互联网 发布:windows会员计划好处 编辑:程序博客网 时间:2024/06/15 10:52
由于工作中需要将应用程序的某些界面截图,并加上注释,并输出为PDF文件,在网上查阅了一些资料,整理汇总后发现有两种方法:一是Qt4版本利用QPrinter将文件输出为PDF。而是Qt5版本写新出的类QPdfWriter,更加快捷精准输出为PDF文件。两者的相同之处都是利用QPainter在其中绘制PDF文件。
在Qt4版本下利用QPrinter将某个控件,或者利用QWidget::grab将控件或界面输出为PDF,详细代码及注释如下:
在Qt5版本选利用QPdfWriter将Qpainter的文件输出为PDF
//利用QPrinter输出为PDF格式并设置分辨率及纸张尺寸 QPrinter pic_printer(QPrinter::ScreenResolution); //设置分辨率 pic_printer.setPageSize(QPrinter::A4); //设置纸张尺寸,默认不设置就是A4 pic_printer.setOutputFormat(QPrinter::PdfFormat); //设置输出格式pdf //用文件对话框设置输出路径 QString file_path = QFileDialog::getSaveFileName(this,"Export PDF",QString(),"*.pdf"); if(!file_path.isEmpty()) { //如果没有写后缀就自动加上 if(QFileInfo(file_path).suffix().isEmpty()) file_path.append(".pdf"); pic_printer.setOutputFileName(file_path); //设置文件名 /*****************************************绘制图片*****************************************/ QPixmap pixmap=QWidget::grab(QRect(ui->qcustomplot->x(),ui->qcustomplot->y(),ui->qcustomplot->frameGeometry().width(),ui->qcustomplot->frameGeometry().height()+10)); //抓取界面widget区域,可以抓取任意控件区域,Qt5推荐新的API QWidget::grab QPainter pic_painter; pic_painter.begin(&pic_printer); //在QPrinter上绘图 QRect rect=pic_painter.viewport(); //获取painter的视口区域 int factor=rect.width()/pixmap.width(); //计算painter视口区域与抓取图片区域的尺寸比例因子 pic_painter.scale(factor*0.6,factor*0.6); //绘制时按照比例因子放大 pic_painter.drawPixmap(10,10,pixmap); //按照坐标画图/***********************以下可利用QPainter自定义绘图**************************************/ } elseQMessageBox::warning(this,tr("Path"),tr("You did not select any file."));/**********************************************Qt5版本QPdfWriter*****************************************************/
QString path = QFileDialog::getSaveFileName(this,tr("Open File"),".",tr("PDF Files(*.pdf)")); //利用QFileDialog对话框选择文件存储路径 if(!path.isEmpty()) { //如果没有写后缀就自动加上 if(QFileInfo(path).suffix().isEmpty()) path.append(".pdf"); //实例化该文件,并以只写的方式打开 QFile pdfFile(path); if(!pdfFile.open(QIODevice::WriteOnly)) { QMessageBox::warning(this,tr("write File"),tr("Cannot open file:\n%1").arg(path)); return; } QPdfWriter *pdfWriter = new QPdfWriter(&pdfFile); //实例化QPdfWriter QPainter *pic_painter = new QPainter(pdfWriter); //实例化QPainter pdfWriter->setPageSize(QPagedPaintDevice::A4); //设置纸张为A4纸 pdfWriter->setResolution(QPrinter::ScreenResolution); //设置分辨率/******************************************************以下为自定义绘图**************************************/delete pic_painter; delete pdfWriter; pdfFile.close(); } else QMessageBox::warning(this,tr("Path"),tr("You did not select any file."));
阅读全文
0 0
- Qt下利用Qprinter或者QPdfWriter导出文件为PDF
- qt如何导出pdf格式的文件
- 利用iTextSharp把DataTable导出为PDF和RTF(Rich Text Format)文件
- C# word或者excel保存或导出为PDF
- qt 打印 QPrinter类
- Qt利用QGraphicsScene编写Word排版工具导出PDF
- Linux下Brit 导出pdf,word等文件的时候echarts的X轴或者Title乱码问题
- Qt5使用QPdfWriter方式写pdf文档
- PyQt5使用QPdfWriter方式写pdf文档
- 利用html2canvas将网页内容导出为pdf
- Qt 导出pdf
- 利用itextsharp导出pdf
- word或者pdf文件全部保存为图片的方法
- Qt中导出.txt, .xls, .xlsx, .pdf文件小结
- Echarts导出为pdf
- php利用header导出.doc或者.xls文件
- IE下用JavaScript将HTML导出为Word、Pdf
- IE下用JavaScript将HTML导出为Word、Pdf
- Java常用代码片段
- JS中开启全屏的函数
- spring cloud 学习网站
- SpringMVC之组合注解
- HTML/CSS/JS之---导航条案例
- Qt下利用Qprinter或者QPdfWriter导出文件为PDF
- 高斯滤波及离散化
- DEBUG如何查看CStringArray每个元素
- cocos2d-x游戏中的性能优化和内存优化
- 数据库事务及事务的四个特性
- 一个SBOP的灾难恢复场景分享
- oracle-日常小计——oracle的dmp 的导入和导出
- Spring —— 生成EntityManagerFactory 的 3 种方式
- 虹软校招笔试题--算法岗