Use this:
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);
The main idea is to print only plainText without formatting, but set normal formatted text after printing, so user will not lose formatted data.
I thought about improvement, so I wrote also this:
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);
Why is it better? We clone QTextDocument *buffer
so we work with this new document. Our plainTextEdit remains untouchable, so user will not see unformatted text while print. But don't forget delete buffer When you don't need this clone aby more.
Result:

In pdf:

As you can see, there is no formatting.