Dans le cadre d’un projet en C++ utilisant Qt pour la partie GUI, il s’est posé la question de savoir comment générer à partir de code HTML et CSS un jôôli PDF.
Voici la solution retenue :
QWebView view; // sera chargé de rendre le code HTML QPrinter printer; // et lui s'occupera de l'impression du rendu // configuration du printer : format A4, rendu en PDF printer.setPageSize(QPrinter::A4); printer.setOutputFormat(QPrinter::PdfFormat); printer.setOutputFileName("mon_super.pdf"); // nom par défaut, changez le ! =) // on donne au QWebView le code HTML à interpréter view.setHtml("<head><title>test titre</title></head><body><h1>titre</h1><p>contenu</p></body></html>"); // si on veut imprimer une page web // view.load(new QUrl("http://www.kevingomez.fr")); // affichage d'une boite de dialogue pour donner quelques options à l'utilisateur // il peut par exemple changer le nom du fichier, définir quelles pages seront imprimées, etc. QPrintDialog printDialog(&printer, this); if(printDialog.exec() == QDialog::Accepted) { view.print(&printer); // impression de la page en utilisant le printer }
Et voilà, nous avons très simplement généré notre PDF ! Nous pouvons bien évidemment utiliser l’URL d’une page pour générer le fichier en utilisant la méthode load(url) de QWebView.