[英]QT html and CSS to pdf file
我正在使用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;
那么使用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()));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.