From ef708c2adb31062d73506917f03fd5e942594d33 Mon Sep 17 00:00:00 2001 From: Ashish Kulkarni Date: Sat, 15 Mar 2014 11:42:11 +0530 Subject: [PATCH 2/2] fix compilation failures when not building with patched QT/WebKit Apparently, no one uses the plain vanilla build as no one reported any issue for a long time. This will get it to compile and work at least for a sample page. Conflicts: src/lib/pdfconverter.cc --- src/lib/pdfconverter.cc | 33 +++++++++++++++++++++++++++------ src/lib/pdfconverter_p.hh | 14 +++++++++----- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/src/lib/pdfconverter.cc b/src/lib/pdfconverter.cc index b227c87..f883a00 100644 --- a/src/lib/pdfconverter.cc +++ b/src/lib/pdfconverter.cc @@ -78,9 +78,9 @@ bool DLL_LOCAL looksLikeHtmlAndNotAUrl(QString str) { PdfConverterPrivate::PdfConverterPrivate(PdfGlobal & s, PdfConverter & o) : settings(s), pageLoader(s.load), - out(o), printer(0), painter(0), webPrinter(0) + out(o), printer(0), painter(0) #ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__ - , measuringHFLoader(s.load), hfLoader(s.load), tocLoader1(s.load), tocLoader2(s.load) + , webPrinter(0), measuringHFLoader(s.load), hfLoader(s.load), tocLoader1(s.load), tocLoader2(s.load) , tocLoader(&tocLoader1), tocLoaderOld(&tocLoader2) , outline(0), currentHeader(0), currentFooter(0) #endif @@ -151,13 +151,15 @@ void PdfConverterPrivate::beginConvert() { fail(); return; } -#endif +#else bool headerHeightsCalcNeeded = false; +#endif for (QList::iterator i=objects.begin(); i != objects.end(); ++i) { PageObject & o=*i; settings::PdfObject & s = o.settings; +#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__ if (!s.header.htmlUrl.isEmpty() ) { if (looksLikeHtmlAndNotAUrl(s.header.htmlUrl)) { emit out.error("--header-html should be a URL and not a string containing HTML code."); @@ -195,6 +197,7 @@ void PdfConverterPrivate::beginConvert() { o.footerReserveHeight = settings.margin.bottom.first + s.footer.spacing; } } +#endif if (!s.isTableOfContent) { o.loaderObject = pageLoader.addResource(s.page, s.load, &o.data); @@ -207,6 +210,7 @@ void PdfConverterPrivate::beginConvert() { emit out.phaseChanged(); loadProgress(0); +#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__ if (headerHeightsCalcNeeded) { // preload header/footer to check their heights measuringHFLoader.load(); @@ -225,8 +229,12 @@ void PdfConverterPrivate::beginConvert() { pageLoader.load(); } +#else + pageLoader.load(); +#endif } +#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__ // calculates header/footer height // returns millimeters qreal PdfConverterPrivate::calculateHeaderHeight(PageObject & object, QWebPage & header) { @@ -252,6 +260,8 @@ qreal PdfConverterPrivate::calculateHeaderHeight(PageObject & object, QWebPage & return (height / PdfConverter::millimeterToPointMultiplier); } +#endif + QPrinter * PdfConverterPrivate::createPrinter(const QString & tempFile) { QPrinter * printer = new QPrinter(settings.resolution); if (settings.dpi != -1) printer->setResolution(settings.dpi); @@ -275,6 +285,7 @@ QPrinter * PdfConverterPrivate::createPrinter(const QString & tempFile) { return printer; } +#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__ void PdfConverterPrivate::preprocessPage(PageObject & obj) { currentObject++; if (obj.settings.isTableOfContent) { @@ -309,7 +320,7 @@ void PdfConverterPrivate::preprocessPage(PageObject & obj) { outline->addEmptyWebPage(); painter->restore(); } - +#endif /*! * Prepares printing out the document to the pdf file @@ -353,9 +364,15 @@ void PdfConverterPrivate::pagesLoaded(bool ok) { } //Setup margins and papersize +#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__ printer->setPageMargins(settings.margin.left.first, objects[0].headerReserveHeight, settings.margin.right.first, objects[0].footerReserveHeight, settings.margin.left.second); +#else + printer->setPageMargins(settings.margin.left.first, settings.margin.top.first, + settings.margin.right.first, settings.margin.bottom.first, + settings.margin.left.second); +#endif if ((settings.size.height.first != -1) && (settings.size.width.first != -1)) { printer->setPaperSize(QSizeF(settings.size.width.first,settings.size.height.first), settings.size.height.second); @@ -656,7 +673,6 @@ void PdfConverterPrivate::endPage(PageObject & object, bool hasHeaderFooter, int } } -#endif void PdfConverterPrivate::handleTocPage(PageObject & obj) { painter->save(); @@ -670,6 +686,7 @@ void PdfConverterPrivate::handleTocPage(PageObject & obj) { tocChanged = outline->replaceWebPage(obj.number, obj.settings.toc.captionText, wp, obj.page->mainFrame(), obj.settings, obj.localLinks, obj.anchors) || tocChanged; painter->restore(); } +#endif void PdfConverterPrivate::tocLoaded(bool ok) { @@ -731,6 +748,7 @@ void PdfConverterPrivate::measuringHeadersLoaded(bool ok) { return; } +#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__ for (int d=0; d < objects.size(); ++d) { PageObject & obj = objects[d]; if (obj.measuringHeader) { @@ -743,6 +761,7 @@ void PdfConverterPrivate::measuringHeadersLoaded(bool ok) { obj.footerReserveHeight = calculateHeaderHeight(obj, *obj.measuringFooter) + obj.settings.header.spacing; } } +#endif pageLoader.load(); } @@ -758,6 +777,7 @@ void PdfConverterPrivate::headersLoaded(bool ok) { printDocument(); } +#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__ void PdfConverterPrivate::spoolPage(int page) { progressString = QString("Page ") + QString::number(actualPage) + QString(" of ") + QString::number(actualPages); @@ -904,7 +924,8 @@ void PdfConverterPrivate::endPrintObject(PageObject & obj) { } } - + +#endif void PdfConverterPrivate::printDocument() { #ifndef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__ diff --git a/src/lib/pdfconverter_p.hh b/src/lib/pdfconverter_p.hh index 2cfa441..3679673 100644 --- a/src/lib/pdfconverter_p.hh +++ b/src/lib/pdfconverter_p.hh @@ -94,8 +94,11 @@ public: } PageObject(const settings::PdfObject & set, const QString * d=NULL): - settings(set), loaderObject(0), page(0), headerReserveHeight(0), footerReserveHeight(0), - measuringHeader(0), measuringFooter(0) { + settings(set), loaderObject(0), page(0) +#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__ + , headerReserveHeight(0), footerReserveHeight(0), measuringHeader(0), measuringFooter(0) +#endif + { if (d) data=*d; }; @@ -134,6 +137,7 @@ private: bool tocChanged; int actualPage; int pageNumber; +#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__ QWebPrinter * webPrinter; int objectPage; @@ -144,7 +148,6 @@ private: QHash > pageFormElements; bool pageHasHeaderFooter; -#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__ // loader for measuringHeader and measuringFooter MultiPageLoader measuringHFLoader; @@ -163,14 +166,14 @@ private: void fillParms(QHash & parms, int page, const PageObject & object); QString hfreplace(const QString & q, const QHash & parms); QWebPage * loadHeaderFooter(QString url, const QHash & parms, const settings::PdfObject & ps); - + qreal calculateHeaderHeight(PageObject & object, QWebPage & header); #endif QWebPage * currentHeader; QWebPage * currentFooter; - qreal calculateHeaderHeight(PageObject & object, QWebPage & header); QPrinter * createPrinter(const QString & tempFile); +#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__ void handleTocPage(PageObject & obj); void preprocessPage(PageObject & obj); void spoolPage(int page); @@ -179,6 +182,7 @@ private: void handleFooter(QWebPage * frame, int page); void beginPrintObject(PageObject & obj); void endPrintObject(PageObject & obj); +#endif void loadTocs(); void loadHeaders(); -- 2.0.0