簡體   English   中英

打印未顯示的網頁

[英]Print a WebPage that isn't shown

如何打印未在窗口/小部件上顯示的頁面? Qt代碼:切換視圖

QPainter painter(printer);
m_webView->page()->setViewportSize(m_pageToPrint->mainFrame()->contentsSize());
painter.scale(scale, scale);
m_pageToPrint->mainFrame()->render(&painter);

要復制到剪貼板,將視圖切換到純文本模式這是用於從webView打印頁面的代碼(現在已從m_webView轉換為m_pageToPrint),但未顯示,但僅加載了m_pageToPrint的代碼要打印的HTML? 上面的代碼的結果是PrinterPreviewer中的白頁。 這是加載html並隨后調用預覽器的代碼:Qt代碼:切換視圖

m_pageToPrint->mainFrame()->setHtml(finalHTML);
m_printPreviewDialog->exec();

要復制到剪貼板,請將視圖切換到純文本模式finalHTML是有效的html代碼。

我使用以下代碼來打印我的HTML報告頁面:

reportprint.h

class ReportPrint : public QObject
{
    Q_OBJECT
    public:
        ReportPrint(QObject *parent = 0);
        void printHTML(QUrl url);
    private:
        QWebView m_webView;
        QPrinter m_printer;
        QPrintPreviewDialog *m_preview;
    protected slots:
        void printReady(bool enable);
        void paintRequested(QPrinter*printer);
}

reportprint.cpp

ReportPrint::ReportPrint(QObject *parent) :
    QObject(parent) {
    connect(&m_webView, SIGNAL(loadFinished(bool)),this, SLOT(printReady(bool)));
}

void ReportPrint::printHTML(QUrl url) {
    m_webView.page()->settings()->clearMemoryCaches();
    // here I point to directory which contains printed html file so the engine can found css files
    QUrl base = QUrl::fromLocalFile(QApplication::applicationDirPath() + "templates/");         
    m_webView.setHtml(url,base);
}

void ReportPrint::printReady(bool enable) {
    if(print_to_default_printer) {
        QString pn = QPrinterInfo::defaultPrinter().printerName();
        m_printer.setPrinterName(pn);
        m_printer.setOutputFormat(QPrinter::NativeFormat);
        m_webView.print(&m_printer);
    } else if(print_with_preview) {
        m_preview = new QPrintPreviewDialog(&p_printer);                 
        connect(m_preview,SIGNAL(paintRequested(QPrinter*)),
                this,SLOT(paintRequested(QPrinter*)));
    }

}

void ReportPrint::paintRequested(QPrinter *printer) {
    m_printer.setOutputFormat(QPrinter::NativeFormat);
    m_webView.print(printer);
    m_preview->deleteLater();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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