2012-01-31 7 views
7

estoy usando Qt (el ejemplo del navegador de fantasía con el creador Qt) para crear una captura de pantalla de páginas web utilizando el código (tomado y convertido de here):crear toda captura de pantalla página utilizando QWebPage

QImage *image = new QImage(view->page()->mainFrame()->contentsSize(), QImage::Format_ARGB32); 
QPainter *painter = new QPainter(image); 

view->page()->mainFrame()->render(painter); 

painter->end(); 
image->save(view->title() + "png"); 

Pero solo crea una captura de pantalla de la parte visible de la página (ver el puerto).

Si agrego esta línea al principio, la captura de pantalla se crea desde toda la página, pero el problema es que agrega una nueva barra de desplazamiento cada vez que se carga una página.

view->page()->setViewportSize(view->page()->mainFrame()->contentsSize()); 

¿Alguna idea de cómo solucionar esto?

Respuesta

11

Sólo tiene que desactivar las barras de desplazamiento:

page()->mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); 
page()->mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); 

Para un ejemplo completo, utiliza lo que he descrito hace 3,5 años en Capturing web pages entrada en el blog. El repositorio de código para eso se movió desde entonces al http://qt.gitorious.org/qt-labs/graphics-dojo.

Si presta atención al ejemplo anterior, no es necesario crear QWebView. Puede trabajar totalmente solo desde la instancia de QWebPage.

+0

Ambos enlaces han expirado – Grief

4

Parece que "wkhtmltopdf" ("wkhtmltopdf") tiene la implementación correcta para esto - busque "pintor" en src/lib/imageconverter.cc.

Cuestiones relacionadas