2012-01-31 8 views
7

Sto usando Qt (l'esempio del browser fantasia con il creatore Qt) per creare uno screenshot di pagine web utilizzando questo codice (preso e convertito da here):Creare intera schermata pagina utilizzando 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"); 

Ma crea solo una schermata della parte visibile della pagina (vista porta).

Se aggiungo questa riga all'inizio, la schermata è creata da tutta la pagina, ma il problema è che aggiunge una nuova barra di scorrimento ogni volta che viene caricata una pagina.

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

Qualche idea su come risolvere questo problema?

risposta

11

Hai solo bisogno di disattivare le barre di scorrimento:

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

Per un esempio completo, utilizzare quello che ho descritto 3,5 anni fa, nel Capturing web pages post sul blog. Il repository di codice per questo è stato da allora spostato a http://qt.gitorious.org/qt-labs/graphics-dojo.

Se si presta attenzione all'esempio precedente, non è necessario creare QWebView. Puoi lavorare totalmente solo dall'istanza di QWebPage.

+0

Entrambi i collegamenti sono scaduti – Grief

4

Sembra che "wkhtmltopdf" ("wkhtmltopdf") abbia l'implementazione corretta per questo: cerca "pittore" in src/lib/imageconverter.cc.

Problemi correlati