|
@@ -1,4 +1,4 @@
|
|
-//-*- mode: c++; tab-width: 4; indent-tabs-mode: t; c-file-style: "stroustrup"; -*-
|
|
|
|
|
|
+
|
|
// This file is part of wkhtmltopdf.
|
|
// This file is part of wkhtmltopdf.
|
|
//
|
|
//
|
|
// wkhtmltopdf is free software: you can redistribute it and/or modify
|
|
// wkhtmltopdf is free software: you can redistribute it and/or modify
|
|
@@ -170,36 +170,6 @@ void PageConverterPrivate::fail() {
|
|
qApp->exit(0); // quit qt's event handling
|
|
qApp->exit(0); // quit qt's event handling
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
-void PageConverterPrivate::findLinks(QWebFrame * frame, QVector<QPair<QWebElement, QString> > & local, QVector<QPair<QWebElement, QString> > & external) {
|
|
|
|
- if (!settings.useLocalLinks && !settings.useExternalLinks) return;
|
|
|
|
- foreach (const QWebElement & elm, frame->findAllElements("a")) {
|
|
|
|
- QUrl href=QUrl(elm.attribute("href"));
|
|
|
|
- if (href.isEmpty()) continue;
|
|
|
|
- href=frame->url().resolved(href);
|
|
|
|
- if (urlToDoc.contains(href.toString(QUrl::RemoveFragment))) {
|
|
|
|
- if (settings.useLocalLinks) {
|
|
|
|
- int t = urlToDoc[href.toString(QUrl::RemoveFragment)];
|
|
|
|
- QWebElement e;
|
|
|
|
- if (!href.hasFragment())
|
|
|
|
- e = pages[t]->mainFrame()->findFirstElement("body");
|
|
|
|
- else {
|
|
|
|
- e = pages[t]->mainFrame()->findFirstElement("a[name=\""+href.fragment()+"\"]");
|
|
|
|
- if(e.isNull())
|
|
|
|
- e = pages[t]->mainFrame()->findFirstElement("*[id=\""+href.fragment()+"\"]");
|
|
|
|
- }
|
|
|
|
- if (e.isNull())
|
|
|
|
- qDebug() << "Unable to find target for local link " << href;
|
|
|
|
- else {
|
|
|
|
- anchors[t][href.toString()] = e;
|
|
|
|
- local.push_back( qMakePair(elm, href.toString()) );
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- } else if (settings.useExternalLinks)
|
|
|
|
- external.push_back( qMakePair(elm, href.toString() ) );
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
/*!
|
|
/*!
|
|
* Prepares printing out the document to the pdf file
|
|
* Prepares printing out the document to the pdf file
|
|
*/
|
|
*/
|
|
@@ -363,6 +333,35 @@ void PageConverterPrivate::preparePrint(bool ok) {
|
|
}
|
|
}
|
|
|
|
|
|
#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__
|
|
#ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__
|
|
|
|
+void PageConverterPrivate::findLinks(QWebFrame * frame, QVector<QPair<QWebElement, QString> > & local, QVector<QPair<QWebElement, QString> > & external) {
|
|
|
|
+ if (!settings.useLocalLinks && !settings.useExternalLinks) return;
|
|
|
|
+ foreach (const QWebElement & elm, frame->findAllElements("a")) {
|
|
|
|
+ QUrl href=QUrl(elm.attribute("href"));
|
|
|
|
+ if (href.isEmpty()) continue;
|
|
|
|
+ href=frame->url().resolved(href);
|
|
|
|
+ if (urlToDoc.contains(href.toString(QUrl::RemoveFragment))) {
|
|
|
|
+ if (settings.useLocalLinks) {
|
|
|
|
+ int t = urlToDoc[href.toString(QUrl::RemoveFragment)];
|
|
|
|
+ QWebElement e;
|
|
|
|
+ if (!href.hasFragment())
|
|
|
|
+ e = pages[t]->mainFrame()->findFirstElement("body");
|
|
|
|
+ else {
|
|
|
|
+ e = pages[t]->mainFrame()->findFirstElement("a[name=\""+href.fragment()+"\"]");
|
|
|
|
+ if(e.isNull())
|
|
|
|
+ e = pages[t]->mainFrame()->findFirstElement("*[id=\""+href.fragment()+"\"]");
|
|
|
|
+ }
|
|
|
|
+ if (e.isNull())
|
|
|
|
+ qDebug() << "Unable to find target for local link " << href;
|
|
|
|
+ else {
|
|
|
|
+ anchors[t][href.toString()] = e;
|
|
|
|
+ local.push_back( qMakePair(elm, href.toString()) );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (settings.useExternalLinks)
|
|
|
|
+ external.push_back( qMakePair(elm, href.toString() ) );
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
void PageConverterPrivate::fillParms(QHash<QString, QString> & parms, int page) {
|
|
void PageConverterPrivate::fillParms(QHash<QString, QString> & parms, int page) {
|
|
outline->fillHeaderFooterParms(page, parms);
|
|
outline->fillHeaderFooterParms(page, parms);
|
|
QDateTime t(QDateTime::currentDateTime());
|
|
QDateTime t(QDateTime::currentDateTime());
|