当前位置:网站首页>Qt导出PDF文件的两种方法
Qt导出PDF文件的两种方法
2022-06-24 06:58:00 【百口可乐__】
设计软件界面,要求将人物的信息和头像导出成pdf
方法一:使用QPrinter+QPainter。
在项目.pro文件中加入
QT += printsupport
//导出pdf
void MainWindow::on_pushButton_clicked()
{
QPrinter printer(QPrinter::HighResolution);
printer.setPageSize(QPrinter::A4);
printer.setResolution(300);
printer.setOutputFormat(QPrinter::PdfFormat);
//设置导出pdf路径
printer.setOutputFileName("D:\\test.pdf");
//创建画笔,以QPainter作为画板
QPainter painter;
painter.begin(&printer);
QFont font = ui->label_9->font();
//加粗字体
font.setBold(true);
painter.setFont(font);
painter.drawText(1200,50,ui->label_9->text());
QPen pen;
pen.setColor(QColor(100,150,255));
pen.setWidth(5);
painter.setPen(pen);
//画横线
painter.drawLine(0,100,2400,100);
font.setBold(false);
font.setPointSize(20);
font.setFamily("微软雅黑");
painter.setFont(font);
pen.setColor(QColor(0,0,0));
painter.setPen(pen);
painter.drawText(100,500,ui->label->text());
painter.drawText(100,800,ui->label_2->text());
painter.drawText(100,1100,ui->label_4->text());
painter.drawText(800,500,ui->label_6->text());
painter.drawText(800,800,ui->label_7->text());
painter.drawText(800,1100,ui->label_8->text());
//获取控件图像
QPixmap pixmap = QPixmap::grabWidget(ui->label_5,ui->label_5->rect());
QRect rect = painter.viewport();
//设置放大倍数
int multiple = rect.width()/3/pixmap.width();
//放大multiple倍
painter.scale(multiple,multiple);
painter.drawPixmap(300,60,pixmap);
painter.end();
}
方法二:使用QPdfWriter+QPainter
//导出pdf
void MainWindow::on_pushButton_2_clicked()
{
QFile pdfFile("D:\\test.pdf");
pdfFile.open(QIODevice::WriteOnly);
QPdfWriter *pdfWriter = new QPdfWriter(&pdfFile);
pdfWriter->setPageSize(QPagedPaintDevice::A4);
//QPdfWriter作为画板
QPainter *painter = new QPainter(pdfWriter);
QFont font = ui->label_9->font();
//加粗字体
font.setBold(true);
painter->setFont(font);
painter->drawText(1200,50,ui->label_9->text());
QPen pen;
pen.setColor(QColor(100,150,255));
pen.setWidth(5);
painter->setPen(pen);
//画横线
painter->drawLine(0,100,2400,100);
font.setBold(false);
font.setPointSize(20);
font.setFamily("微软雅黑");
painter->setFont(font);
pen.setColor(QColor(0,0,0));
painter->setPen(pen);
painter->drawText(100,500,ui->label->text());
painter->drawText(100,800,ui->label_2->text());
painter->drawText(100,1100,ui->label_4->text());
painter->drawText(800,500,ui->label_6->text());
painter->drawText(800,800,ui->label_7->text());
painter->drawText(800,1100,ui->label_8->text());
//获取控件图像
QPixmap pixmap = QPixmap::grabWidget(ui->label_5,ui->label_5->rect());
QRect rect = painter->viewport();
//设置放大倍数
int multiple = rect.width()/3/pixmap.width();
//放大multiple倍
painter->scale(multiple,multiple);
painter->drawPixmap(300,60,pixmap);
//销毁实例
delete painter;
delete pdfWriter;
//关闭文件
pdfFile.close();
}
软件运行效果:
点击导出pdf1使用第一种方法导出pdf,点击导出pdf2使用第二种方法导出pdf
导出的pdf文件:
边栏推荐
- Paper notes: multi label learning dm2l
- Sql语句内运算问题
- Chart list Performance Optimization: minimum resource consumption in the visualization area
- Coordinate transformation of graphic technology
- [ACNOI2022]做过也不会
- 1279_ Vsock installation failure resolution when VMware player installs VMware Tools
- js滚动div滚动条到底部
- Which is the first poem of Tang Dynasty?
- Blue Bridge Cup_ Queen n problem
- Qopengl display point cloud file
猜你喜欢

Simple summary of lighting usage

Coordinate transformation of graphic technology

For a detailed explanation of flex:1, flex:1

1279_ Vsock installation failure resolution when VMware player installs VMware Tools

一文带你了解Windows操作系统安全,保护自己的电脑不受侵害

WCF TCP protocol transmission

Swift Extension ChainLayout(UI的链式布局)(源码)

Utilisation de la fermeture / bloc de base SWIFT (source)

RCNN、Fast-RCNN、Faster-RCNN介绍

软件工程导论——第二章——可行性研究
随机推荐
Learning event binding of 3D visualization from scratch
Question 1: the container that holds the most water
Swift extension chainlayout (UI chain layout) (source code)
2022年流动式起重机司机特种作业证考试题库及在线模拟考试
June 27, 2021: given a positive array arr, it represents the weight of several people
OpenCV get(propId) 常用的值
Swift Extension ChainLayout(UI的链式布局)(源码)
Search and recommend those things
Simple refraction effect
2022 tea artist (intermediate) work license question bank and online simulation examination
Swift extension networkutil (network monitoring) (source code)
疫情下更合适的开发模式
etcd备份恢复原理详解及踩坑实录
In the post epidemic era, the home service robot industry has just set sail
Swift 基礎 閉包/Block的使用(源碼)
More than observation | Alibaba cloud observable suite officially released
Catégorie de prêt 5
487. number of maximum consecutive 1 II ●●
Shader common functions
Future trends in automated testing