これを使って:
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で:

ご覧のとおり、書式設定はありません。