Распечатать несколько QTextDocuments с QPrinter

Мне нужно сгенерировать документ для печати для ряда объектов, которые пользователь создает динамически, и я хочу напечатать эти документы. Я написал следующий код (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 ().

Я должен сделать это по-другому?

0

Решение

Вы можете добавить разрыв страницы для каждой серии, а затем распечатать документ.
Попробуйте, например, со следующим

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. Вы можете изменить его лучше, чтобы удовлетворить ваши потребности.
Надеюсь это поможет.

1

Другие решения


По вопросам рекламы [email protected]