사용이 :
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로
: 당신이 볼 수 있듯이
, 어떤 형식이 없습니다.
이 방법은 효과가 있지만 텍스트가 크면 성능이 떨어집니다. 같은 일을하는 다른 방법이 있습니까? – Yore
@ 예 물론 그렇습니다. 그러나 모든 것이 큰 데이터로는 성능이 낮습니다. 알다시피'printPlainText'와 같은 메소드가 없으므로 어쨌든 형식을 제거해야합니다. 내 접근 방식은 이것을 달성 할 수 있습니다. 제 생각에 QPainter를 사용한 렌더링은 비효율적입니다. 이 답변은 형식 삭제 방법을 향상시켜야 개선 될 수 있지만 이제는 더 쉽게 만들 수있는 쉬운 방법이 없습니다. – Chernobyl
제 경우에는 효과가있었습니다. 다른 구성 요소로 인해 구성 요소의 내용을 변경할 수 없기 때문에 약간의 코드를 교체해야했습니다. 최종 접근 방식은 성능이 다소 떨어졌지만 인생은 그랬습니다 : D Thx. – Yore