void QWebFrameProto::print(QPrinter * printer) const { scriptDeprecated("QWebFrame will not be available in future versions"); QWebFrame *item = qscriptvalue_cast<QWebFrame*>(thisObject()); if (item) item->print(printer); }
void WebTab::printFrame() { if (page()->isOnRekonqPage()) { // trigger print part action instead of ours.. KParts::ReadOnlyPart *p = part(); if (p) { KParts::BrowserExtension *ext = p->browserExtension(); if (ext) { KParts::BrowserExtension::ActionSlotMap *actionSlotMap = KParts::BrowserExtension::actionSlotMapPtr(); connect(this, SIGNAL(triggerPartPrint()), ext, actionSlotMap->value("print")); emit triggerPartPrint(); return; } } } QWebFrame *printFrame = page()->currentFrame(); if (printFrame == 0) { printFrame = page()->mainFrame(); } QPrinter printer; printer.setDocName(printFrame->title()); QPrintDialog *printDialog = KdePrint::createPrintDialog(&printer, this); if (printDialog) //check if the Dialog was created { if (printDialog->exec()) printFrame->print(&printer); delete printDialog; } }
void CutyCapt::saveSnapshot() { QWebFrame *mainFrame = mPage->mainFrame(); QPainter painter; const char* format = NULL; for (int ix = 0; CutyExtMap[ix].id != OtherFormat; ++ix) { if (CutyExtMap[ix].id == mFormat) { format = CutyExtMap[ix].identifier; } } // TODO: sometimes contents/viewport can have size 0x0 in which case saving // them will fail. This is likely the result of the method being called too // early. So far I've been unable to find a workaround, except using --delay // with some substantial wait time. I've tried to resize multiple time, make // a fake render, check for other events... This is primarily a problem under // my Ubuntu virtual machine. mPage->setViewportSize( mainFrame->contentsSize() ); switch (mFormat) { case SvgFormat: { QSvgGenerator svg; svg.setFileName(mOutput); svg.setSize(mPage->viewportSize()); painter.begin(&svg); mainFrame->render(&painter); painter.end(); break; } case PdfFormat: case PsFormat: { QPrinter printer; printer.setPageSize(QPrinter::A4); printer.setOutputFileName(mOutput); // TODO: change quality here? mainFrame->print(&printer); break; } #if QT_VERSION < 0x050000 case RenderTreeFormat: QFile file(mOutput); file.open(QIODevice::WriteOnly | QIODevice::Text); QTextStream s(&file); s.setCodec("utf-8"); s << mainFrame->renderTreeDump(); break; } #endif case InnerTextFormat: case HtmlFormat: { QFile file(mOutput); file.open(QIODevice::WriteOnly | QIODevice::Text); QTextStream s(&file); s.setCodec("utf-8"); s << (mFormat == InnerTextFormat ? mainFrame->toPlainText() : (mFormat == HtmlFormat ? mainFrame->toHtml() : "bug")); break; } default: { QImage image(mPage->viewportSize(), QImage::Format_ARGB32); painter.begin(&image); mainFrame->render(&painter); painter.end(); // TODO: add quality image.save(mOutput, format); } };