当前位置:网站首页>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文件:
边栏推荐
- 复习SGI STL二级空间配置器(内存池) | 笔记自用
- Which is the first poem of Tang Dynasty?
- JVM underlying principle analysis
- SQL intra statement operation
- 【点云数据集介绍】
- 51 single chip microcomputer_ External interrupt and timer / Counter interrupt
- MySQL source and target table row count check
- Getting started with crawler to giving up 06: crawler play Fund (with code)
- Swift extension chainlayout (UI chain layout) (source code)
- Auto usage example
猜你喜欢

FPGA的虚拟时钟如何使用?

2021-03-11 COMP9021第八节课笔记

2022茶艺师(中级)上岗证题库及在线模拟考试

Question bank and simulation examination for operation certificate of refrigeration and air conditioning equipment in 2022

Leetcode 207: course schedule (topological sorting determines whether the loop is formed)

Swift 基础 闭包/Block的使用(源码)

MAYA重新拓布

Swift extension networkutil (network monitoring) (source code)

Question 3 - MessageBox pop-up box, modify the default background color

2021-03-16 COMP9021第九节课笔记
随机推荐
Vulnhub target: boredhackerblog: social network
1279_ Vsock installation failure resolution when VMware player installs VMware Tools
普通token
Simple refraction effect
dhcp、tftp基础
2022年制冷与空调设备运行操作上岗证题库及模拟考试
MAYA重新拓布
June 27, 2021: given a positive array arr, it represents the weight of several people
All you know is the test pyramid?
WCF TCP protocol transmission
os.path.join()使用过程中遇到的坑
How to use the virtual clock of FPGA?
Robot acceleration level task priority inverse kinematics
Leetcode 207: course schedule (topological sorting determines whether the loop is formed)
Swift Extension NetworkUtil(网络监听)(源码)
Pat 1157: school anniversary
直播回顾 | 云原生混部系统 Koordinator 架构详解(附完整PPT)
longhorn安装与使用
基金的募集,交易与登记
More than observation | Alibaba cloud observable suite officially released