簡體   English   中英

QT html和CSS到pdf文件

[英]QT html and CSS to pdf file

我正在使用QTextDocument並使用setHtml添加html。 然后我使用QPrinter以A4 pdf格式打印QPrinter::PdfFormat但是打印的pdf沒有采用css樣式表。 我還嘗試了QTextDocument::setDefaultHtmlsetResource

代碼如下。 如何獲得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;

那么使用QWebEngineViewQWebEnginePage呢? 只需在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM