Qt使用QPrinter生成多页pdf文档

Qt使用QPrinter生成多页pdf文档

说明

使用QPrinter的newPage()成员函数可以新产生一页pdf,QPrinter结合QPainter一起使用,只要没有执行end()就可以继续加新的页。

代码示例

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QPrinter>
#include <QPainter>
#include <QImage>

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

    QPrinter printer;
    printer.setOutputFormat(QPrinter::PdfFormat);
    printer.setPageSize(QPrinter::A4);
    printer.setFullPage(true);
    QString strPath = "/tmp/test.pdf";
    printer.setOutputFileName(strPath);

    QImage image;
    image.load("/tmp/test.png");

    QPainter m_painter;
    m_painter.begin(&printer);
    m_painter.drawImage(QRect(100, 100, 400, 400), image); //画在第一页
    printer.newPage();
    m_painter.drawImage(QRect(200, 300, 400, 400), image); //画在第二页
    //想更多的页可以继续执行printer.newPage(),或者使用循环添加也可以
    m_painter.end();
}

使用例子

之前有一个项目需要给pdf文档添加水印,pdf的第一页添加一种水印,后面的页添加另外一种水印。处理方法是先使用printer.newPage()产生两页pdf,再往这两页添加不同的水印,最后将第一页叠加到需要添加水印的pdf文档的首页,第二页叠加到需要添加水印的pdf文档的其他页。

猜你喜欢

转载自blog.csdn.net/qq_33594636/article/details/125912705