Оставлю решение, чтобы и самому не забыть 

Сначала страницы формируются с помощью 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;
}