Оставлю решение, чтобы и самому не забыть
Сначала страницы формируются с помощью QTextDocument, а потом экспортируются в PDF.
QPainter painter(printer);
QSizeF pageSize = printer->pageRect().size();
const qreal footerHeight = painter.fontMetrics().height();
const QRectF textRect(0, 0, pageSize.width(), pageSize.height() - footerHeight);
reportPDF->setPageSize(textRect.size());
const int pageCount = reportPDF->pageCount();
bool firstPage = true;
for (int pageIndex = 0; pageIndex < pageCount; ++pageIndex)
{
if(!firstPage)
{
printer->newPage();
}
painter.drawImage(textRect, QImage(":/images/resource/images/background_report.png"));
if(pageIndex == 0)
{
QRectF headerRect = textRect;
headerRect.setBottom(textRect.top());
headerRect.setHeight(footerHeight);
painter.drawText(headerRect, Qt::AlignVCenter|Qt::AlignLeft, widget->table()->item(pos.x(), 1)->text() +
" - " + widget->table()->item(pos.y(), 1)->text());
painter.drawText(headerRect, Qt::AlignVCenter|Qt::AlignRight, QObject::tr("Страниц: %1").arg(pageCount));
}
painter.save();
const QRectF textPageRect(0, pageIndex*reportPDF->pageSize().height(), reportPDF->pageSize().width(),
reportPDF->pageSize().height());
painter.setClipRect(textRect);
painter.translate(0, -textPageRect.top());
painter.translate(textRect.left(), textRect.top());
reportPDF->drawContents(&painter);
painter.restore();
QRectF footerRect = textRect;
footerRect.setTop(textRect.bottom());
footerRect.setHeight(footerHeight);
painter.drawText(footerRect, Qt::AlignVCenter|Qt::AlignLeft, QDate::currentDate().toString("dd.MM.yyyy"));
painter.drawText(footerRect, Qt::AlignVCenter|Qt::AlignRight,
QObject::tr("Страница %1 из %2").arg(pageIndex +1 ).arg(pageCount));
emit m_progressbar->increment();
firstPage = false;
}