我使用QTextDocument
并使用setHtml
添加html。然后,我使用QPrinter
以A4 pdf格式打印QPrinter::PdfFormat
,但是打印出来的pdf没有采用css样式表。我还试过QTextDocument::setDefaultHtml
和setResource
。
代码如下。如何以pdf格式获得CSS样式。我使用ubuntu和qmake编译。
const int highQualityDPI = 300;
QDir::setCurrent(QCoreApplication::applicationDirPath());
QFile htmlFile ("myhtml.html");
if (!htmlFile.open(QIODevice::ReadOnly | QIODevice::Text)){
return -1;
}
QString htmlContent;
QTextStream in(&htmlFile);
htmlContent=in.readAll();
QFile cssFile ("style.css");
if (!cssFile.open(QIODevice::ReadOnly | QIODevice::Text)){
return -1;
}
QString cssContent;
QTextStream cssIn(&cssFile);
cssContent = cssIn.readAll();
QTextDocument *document = new QTextDocument();
document->addResource( QTextDocument::StyleSheetResource, QUrl( "style.css" ), cssContent );
document->setHtml( htmlContent );
QPrinter printer(QPrinter::HighResolution);
printer.setPageSize(QPrinter::A4);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("output.pdf");
document->print(&printer);
delete document;
return 0;
发布于 2016-09-29 00:52:38
那么使用QWebEngineView & QWebEnginePage呢?只需在WebView中加载HTML文件并调用printToPdf函数:
const QString fileName = QFileDialog::getSaveFileName(0,
tr("Save pdf"),
getLastDirectory(),
tr("PDF Files (*.pdf)"));
if (fileName.isEmpty()) {
return;
}
ui->webView->page()->printToPdf(fileName);
与QWebKit一起使用:
// Set location of resulting PDF
const QString fileName = QFileDialog::getSaveFileName(0,
tr("Save pdf"),
getLastDirectory(),
tr("PDF Files (*.pdf)"));
if (fileName.isEmpty()) {
return;
}
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFileName(fileName);
// Create PDF
ui->webview->print(&printer);
如何用css加载html文件?如果HTML将CSS文件正确链接在同一个文件夹中:
QFile htmlFile ("myhtml.html");
ui->webView->load(QUrl::fromLocalFile(QFileInfo(htmlFile).absoluteFilePath()));
https://stackoverflow.com/questions/39761989
复制相似问题