diff --git a/src/khtmlview.h b/src/khtmlview.h --- a/src/khtmlview.h +++ b/src/khtmlview.h @@ -32,6 +32,7 @@ #include class QPainter; +class QPrinter; class QRect; template< typename T > class QVector; template class QStack; @@ -200,6 +201,13 @@ void print(bool quick = false); /** + * Prints the HTML document. + * @param printer shared printer instance + * @param quick if true, fully automated printing, without print dialog + */ + void print(QPrinter *printer, bool quick = false); + + /** * Display all accesskeys in small tooltips */ void displayAccessKeys(); diff --git a/src/khtmlview.cpp b/src/khtmlview.cpp --- a/src/khtmlview.cpp +++ b/src/khtmlview.cpp @@ -3127,15 +3127,21 @@ void KHTMLView::print(bool quick) { + QPrinter printer; + print(&printer, quick); +} + +void KHTMLView::print(QPrinter *_printer, bool quick) +{ if (!m_part->xmlDocImpl()) { return; } khtml::RenderCanvas *root = static_cast(m_part->xmlDocImpl()->renderer()); if (!root) { return; } - QPrinter printer; + QPrinter &printer = *_printer; QPointer dialog(new QPrintDialog(&printer, this)); QPointer printSettings(new KHTMLPrintSettings(dialog)); //XXX: doesn't save settings between prints like this dialog->setOptionTabs(QList() << printSettings.data());