summaryrefslogtreecommitdiff
path: root/community/wkhtmltopdf/0002-fix-compilation-failures-when-not-building-with-patc.patch
blob: e71155ff3d1bb91b2e7e22e9e38d62f9d1d1ab3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
From ef708c2adb31062d73506917f03fd5e942594d33 Mon Sep 17 00:00:00 2001
From: Ashish Kulkarni <kulkarni.ashish@gmail.com>
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<PageObject>::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<int, QVector<QWebElement> > pageFormElements;
 	bool pageHasHeaderFooter;
 	
-#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__
     // loader for measuringHeader and measuringFooter
     MultiPageLoader measuringHFLoader;
 
@@ -163,14 +166,14 @@ private:
 	void fillParms(QHash<QString, QString> & parms, int page, const PageObject & object);
 	QString hfreplace(const QString & q, const QHash<QString, QString> & parms);
 	QWebPage * loadHeaderFooter(QString url, const QHash<QString, QString> & 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