From 1e55e71dabf90c41c15a6cc47adbf198be0b2c95 Mon Sep 17 00:00:00 2001 From: Jakob Truelsen Date: Wed, 7 May 2008 16:22:48 +0000 Subject: [PATCH] Working program --- CMakeLists.txt | 14 ++++++++++++++ wkhtmltopdf.cc | 41 +++++++++++++++++++++++++++++++++++++++++ wkhtmltopdf.hh | 16 ++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 wkhtmltopdf.cc create mode 100644 wkhtmltopdf.hh diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..7d24c5537 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,14 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(wkhtmltopdf) +SET( CMAKE_COLOR_MAKEFILE ON ) +SET( CMAKE_VERBOSE_MAKEFILE ON ) +SET( CMAKE_INCLUDE_CURRENT_DIR TRUE ) +ADD_DEFINITIONS( -Wall -ansi) +SET( QT_USE_QTWEBKIT TRUE ) +FIND_PACKAGE( Qt4 REQUIRED ) +INCLUDE( ${QT_USE_FILE} ) +INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR} ) +QT4_WRAP_CPP(HAT wkhtmltopdf.hh) +ADD_EXECUTABLE(wkhtmltopdf wkhtmltopdf.cc ${HAT}) +TARGET_LINK_LIBRARIES( wkhtmltopdf ${QT_LIBRARIES} ) +INSTALL(TARGETS wkhtmltopdf DESTINATION bin) diff --git a/wkhtmltopdf.cc b/wkhtmltopdf.cc new file mode 100644 index 000000000..b3dd59c9c --- /dev/null +++ b/wkhtmltopdf.cc @@ -0,0 +1,41 @@ +#include "wkhtmltopdf.hh" +QApplication * app; + +void WKHtmlToPdf::run(int argc, char ** argv) { + if(argc != 3) { + fprintf(stderr, + "Usage: wkhtmltopdf \n" + "\t URL or local path to html document\n" + "\t Name of ps or pdf file to be produced\n"); + exit(1); + } + QUrl url(argv[1]); + v.load(url); + out = argv[2]; + connect(&v, SIGNAL(loadProgress(int)), this, SLOT(loadProgress(int))); + connect(&v, SIGNAL(loadFinished()), this, SLOT(loadFinished())); +} + +void WKHtmlToPdf::loadFinished() { + printf("Outputting page \r"); + fflush(stdout); + QPrinter p(QPrinter::HighResolution); + p.setOutputFileName(out); + p.setPaperSize(QPrinter::A4); + v.print(&p); + printf("Done \n"); + app->quit(); +} + +void WKHtmlToPdf::loadProgress(int progress) { + printf("Loading page: %d%% \r",progress); + fflush(stdout); +} + +int main(int argc, char * argv[]) { + QApplication a(argc,argv); + app = &a; + WKHtmlToPdf x; + x.run(argc,argv); + return a.exec(); +} diff --git a/wkhtmltopdf.hh b/wkhtmltopdf.hh new file mode 100644 index 000000000..dfb5900bb --- /dev/null +++ b/wkhtmltopdf.hh @@ -0,0 +1,16 @@ +#ifndef __wkhtmltopdf_hh__ +#define __wkhtmltopdf_hh__ +#include +#include +#include +class WKHtmlToPdf : public QObject { + Q_OBJECT +public: + QWebView v; + char * out; + void run(int argc, char** argv); +public slots: + void loadFinished(); + void loadProgress(int progress); +}; +#endif //__wkhtmltopdf_hh__