Мне интересно, как распечатать документ QPlainTextEdit
компонент без каких-либо цветов, фонов или форматов (только простой текст). Код, который я имею, печатает фон (белый на черном в моем случае).
QPrinter printer;
QPrintDialog dialog( &printer, NULL );
dialog.setWindowTitle( tr( "Print Content" ) );
if ( isSelection ) {
dialog.addEnabledOption( QAbstractPrintDialog::PrintSelection );
}
if ( dialog.exec() == QDialog::Accepted ) {
document->print(&printer);
}
Есть идеи ?? Заранее спасибо !
Использовать этот:
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("output.pdf");
QString buffer = ui->plainTextEdit->document()->toHtml();
ui->plainTextEdit->setPlainText(ui->plainTextEdit->toPlainText());
ui->plainTextEdit->document()->print(&printer);
ui->plainTextEdit->clear();
ui->plainTextEdit->appendHtml(buffer);
Основная идея состоит в том, чтобы печатать только обычный текст без форматирования, но после печати установить обычный форматированный текст, чтобы пользователь не потерял отформатированные данные.
Я думал об улучшении, поэтому я написал также это:
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("output.pdf");
QTextDocument *buffer = ui->plainTextEdit->document()->clone();
buffer->setPlainText(ui->plainTextEdit->toPlainText());
buffer->print(&printer);
Почему лучше? Мы клонируем QTextDocument *buffer
поэтому мы работаем с этим новым документом. Наш plainTextEdit остается неприкасаемым, поэтому пользователь не увидит неформатированный текст во время печати. Но не забывайте удалять буфер, когда вам больше не нужен этот клон.
Результат:
В pdf:
Как видите, форматирования нет.