QT输出多页PDF文档

目录

1.结果展示

2.实现说明

3.关键代码展示

4.文件下载


1.结果展示

2.实现说明

        本例输出多页PDF文档主要由QPrinter和QPainter实现,原理是使用QPainter在QPrinter的区域中绘制各种文字、图片、表格等需要打印的类容。使用QPainter的begin(&printer)方法开始绘制,中间使用QPrinter的newPage()方法新建页面并绘制形成多页PDF,最后使用QPainter的end()方法结束绘制。输出PDF使用QPrinter的setOutputFileName(路径/文件名)方法将PDF文档保存到指定文件夹中。

        此处只展示了绘制文字,若需绘制其它类容,如图片、表格,使用QPainter绘制图片和线段即可实现,绘制中需注意QPrinter中的区域尺寸,预留好合适的页边距,防止绘制超出边界。想要使输出的PDF文档中格式工整好看,其主要还是要靠QPainter的绘制,如果对QPainter的绘制掌握熟练并且经验丰富,可实现输出非常精美的PDF文档。

3.关键代码展示

项目.pro文件中需添加:QT += printsupport

头文件outputpdf.h代码如下:

#ifndef OUTPUTPDF_H
#define OUTPUTPDF_H

#include <QWidget>
#include <QtPrintSupport/QPrinter>
#include <QPainter>

QT_BEGIN_NAMESPACE
namespace Ui { class OutputPDF; }
QT_END_NAMESPACE

class OutputPDF : public QWidget
{
    Q_OBJECT

public:
    OutputPDF(QWidget *parent = nullptr);
    ~OutputPDF();

private slots:
    void on_pushButton_clicked();

private:
    Ui::OutputPDF *ui;
};
#endif // OUTPUTPDF_H

源文件outputpdf.cpp代码如下:

#include "outputpdf.h"
#include "ui_outputpdf.h"

OutputPDF::OutputPDF(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::OutputPDF)
{
    ui->setupUi(this);
}

OutputPDF::~OutputPDF()
{
    delete ui;
}


void OutputPDF::on_pushButton_clicked()//按钮点击事件中为打印输出代码
{
    QPrinter printer(QPrinter::HighResolution);
    printer.setPageSize(QPrinter::A4);//A4纸大小
    printer.setResolution(300);
    printer.setOutputFormat(QPrinter::PdfFormat);//PDF格式
    printer.setOutputFileName(QString::fromLocal8Bit("C:/Users/Administrator/Desktop/Qt输出多页PDF文件示例.pdf"));//输出到桌面

    QPainter painter;
    painter.begin(&printer);//开始在打印区域上绘制类容

    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.setFont(QFont("Arial",40));
    painter.drawText(printer.width()/2-800,600,QString::fromLocal8Bit("QT输出PDF示例第1页"));

    for(int i=2;i<7;i++)
    {
        printer.newPage();//新建2-6页
        painter.drawText(printer.width()/2-800,600,QString::fromLocal8Bit("QT输出PDF示例第") + QString::number(i) + QString::fromLocal8Bit("页"));
    }

    painter.end();//绘制结束
}

4.文件下载

        与此文章对应的QT项目源代码和打包文件夹在下方下载路径中,包含项目源代码和打包好的文件夹,打开打包文件夹中的执行文件可测试看到运行结果。

https://download.csdn.net/download/weixin_44322043/86250515

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

99.999...%

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值