Qt笔记(四十七)之QPrinter方式导出PDF

104 篇文章 127 订阅

一.前言
楼主之前导出过文本文件、csv、excel,随着接触的用户越来越多,也出现了导出PDF的需求,该文章楼主介绍通过QPrinter方式来导出

二.流程
1.pro文件增加QT += printsupport
在这里插入图片描述
2.头文件包含

#include <QPrinter>
#include <QUrl>
#include <QFileDialog>
#include <QDesktopServices>
#include <QRect>

3.核心代码

void PdfWidget::on_pushButton_1_clicked()
{
    QString pdfName = "E://"+QDateTime::currentDateTime().toString("yyyy-MM-dd-HH-mm-ss")+".pdf";
    QString pdfPath = QFileDialog::getSaveFileName(this,"Save Pdf",pdfName,"*.pdf");
    if(pdfPath.isEmpty())
        return;
    QPrinter printer(QPrinter::PrinterMode::HighResolution);

    printer.setOutputFormat(QPrinter::PdfFormat);
    printer.setPageSize(QPagedPaintDevice::A4);
    printer.setOutputFileName(pdfPath);
    printer.setOrientation(QPrinter::Landscape);
    printer.setPageMargins(10,10,10,10,QPrinter::Millimeter);

    QPainter painter;
    painter.begin(&printer);

    // 设置字体属性
    QFont font;
    font.setFamily("宋体");
    font.setBold(true);
    font.setWeight(15);
    font.setUnderline(true);
    painter.setFont(font);

    // 设置画笔颜色
    QPen pen;
    pen.setColor(Qt::green);
    painter.setPen(pen);

    // 开始绘制
    painter.drawText(QRect(0, 100,printer.width(),printer.height()),"111111");
    painter.drawText(QRect(0, 400, printer.width(), printer.height()), "222222222222222222222222");

    // 新一页
    printer.newPage();
    painter.drawText(QRect(0, 0, printer.width(), printer.height()), "3333333333333333333333333");

    painter.end();

    // 打开PDF
    QDesktopServices::openUrl(QUrl(pdfPath));
}

4.效果
在这里插入图片描述
三.其他
1.QPrinter方式导出PDF,相当于这些数据是打印到pdf的,因此确切点来说是叫打印到pdf文件
2.这种的写入数据方式就和绘图差不多了,需要根据需要计算位置,也需要注意是否超过了纸张的最大高度以及最大宽度,对开发者来说,比较复杂
3.楼主认为这种方式只适合简单的数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值