说明
使用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文档的其他页。