用这个:
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中:
如您所见,没有格式。