Мне нужно сгенерировать документ для печати для ряда объектов, которые пользователь создает динамически, и я хочу напечатать эти документы. Я написал следующий код (generateDocument () берет ссылку на документ, чтобы добавить HTML-код):
QPrinter printer;
QPrintDialog popup(&printer);
if (popup.exec() == QDialog::Accepted)
{
for (int i = 0; i < _quiz->getSerieCount(); i++)
{
QTextDocument doc;
generateDocument(doc, _quiz->getSerie(i));
doc.print(&printer);
}
}
При печати в pdf поведение в linux и windows отличается: в linux просто печатается последний сгенерированный документ, а в windows предлагается выбрать новый pdf для каждого вызова generateDocument ().
Я должен сделать это по-другому?
Вы можете добавить разрыв страницы для каждой серии, а затем распечатать документ.
Попробуйте, например, со следующим
QTextDocument doc;
QTextCursor cursor(&doc);
for (int i = 0; i < _quiz->getSerieCount(); i++)
{
if(i!=0) \\ dont add page break for the first document
{
QTextBlockFormat blockFormat;
blockFormat.setPageBreakPolicy(QTextFormat::PageBreak_AlwaysAfter);
cursor.insertBlock(blockFormat);
}
// < append _quiz->getSerie(i) contents in the document >
}
doc.print(&printer);
Я не тестировал код, но должен работать на Windows без проблем, я полагаю, потому что я использовал его аналогично, без каких-либо проблем. Ничего не могу прокомментировать за его поведение на машинах Linux. Вы можете изменить его лучше, чтобы удовлетворить ваши потребности.
Надеюсь это поможет.