Qt 将html打印到打印机

Qt 将html打印到打印机,qt,printing,Qt,Printing,我有一些HTML,想用打印机打印。我的Qt版本是Qt5.5,我写道: QFile x("E://a.html"); x.open(QIODevice::ReadOnly); QTextStream in(&x); QString html = in.readAll(); QTextDocument doc; QPrinter p(QPrinter::HighResolution); p.setResolution(QPrinter::HighResolution); p.setOutp

我有一些HTML,想用打印机打印。我的Qt版本是Qt5.5,我写道:

QFile x("E://a.html");
x.open(QIODevice::ReadOnly);
QTextStream in(&x);
QString html = in.readAll();
QTextDocument doc;

QPrinter p(QPrinter::HighResolution);
p.setResolution(QPrinter::HighResolution);
p.setOutputFormat(QPrinter::NativeFormat);
QPrintDialog printDialog(&p);
if (printDialog.exec() == QDialog::Accepted) {
    QSizeF paperSize;
    paperSize.setWidth(p.width());
    paperSize.setHeight(p.height());
    doc.setPageSize(paperSize);
    doc.setHtml(html);
    doc.print(&p);
}
我得到了结果。但是HTML内容太小了。。。

我想打印一些不同的纸张大小,如A3、A4、A5等,我需要HTML内容自动适应纸张大小。

看看,他们建议使用以下代码缩放打印小部件:

QPainter painter;
painter.begin(&printer);
double xscale = printer.pageRect().width()/double(myWidget->width());
double yscale = printer.pageRect().height()/double(myWidget->height());
double scale = qMin(xscale, yscale);
painter.translate(printer.paperRect().x() + printer.pageRect().width()/2,
printer.paperRect().y() + printer.pageRect().height()/2);
painter.scale(scale, scale);
painter.translate(-width()/2, -height()/2);
myWidget->render(&painter);
p.setResolution(QPrinter::HighResolution)
文档设置页面大小(纸张大小)它似乎给出了一个正常的大小。