2015-09-23 175 views
0

我有一些HTML,想要打印到打印機。我的Qt版本是Qt5.5,我寫道:Qt打印html到打印機

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內容是太渺小了...... HTML Content

我想打印一些不同的紙張尺寸,如A3,A4,A5等,我需要HTML內容自動適應紙張大小。

+0

沒有'p.setResolution(QPrinter來::高分辨率);'和'doc.setPageSize(PAPERSIZE);'它似乎給出了一個正常的大小。 – agold

回答

0

看一看http://doc.qt.io/qt-5/qtprintsupport-index.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);