Browse Source

added viewport-size -
Set viewport size if you have custom scrollbars
or css attribute overflow(auto|hidden) to emulate window size

pussbb 12 years ago
parent
commit
812d9edc1d

+ 2 - 0
include/wkhtmltox/pdfsettings.hh

@@ -136,6 +136,8 @@ struct DLL_PUBLIC PdfGlobal {
 	//! Specify the output format we should use
 	QString outputFormat;
 
+	QString viewportSize;
+
 	int imageDPI;
 	int imageQuality;
 

+ 16 - 0
src/lib/pdfconverter.cc

@@ -122,6 +122,14 @@ PdfConverterPrivate::PdfConverterPrivate(PdfGlobal & s, PdfConverter & o) :
 	connect(&tocLoader2, SIGNAL(error(QString)), this, SLOT(forwardError(QString)));
 	connect(&tocLoader2, SIGNAL(warning(QString)), this, SLOT(forwardWarning(QString)));
 #endif
+
+	if ( ! settings.viewportSize.isEmpty())
+	{
+		QStringList viewportSizeList = settings.viewportSize.split("x");
+		int width = viewportSizeList.first().toInt();
+		int height = viewportSizeList.last().toInt();
+		viewportSize = QSize(width,height);
+	}
 }
 
 PdfConverterPrivate::~PdfConverterPrivate() {
@@ -272,6 +280,14 @@ void PdfConverterPrivate::preprocessPage(PageObject & obj) {
 	emit out.progressChanged((currentObject)*100 / tot);
 	
 	painter->save();
+
+	if (viewportSize.isValid() && ! viewportSize.isEmpty()) {
+		obj.page->setViewportSize(viewportSize);
+		obj.page->mainFrame()->setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff);
+		obj.page->mainFrame()->setScrollBarPolicy(Qt::Horizontal,Qt::ScrollBarAlwaysOff);
+	}
+
+
 	QWebPrinter wp(obj.page->mainFrame(), printer, *painter);
 	obj.pageCount = obj.settings.pagesCount? wp.pageCount(): 0;
 	pageCount += obj.pageCount;

+ 1 - 1
src/lib/pdfconverter_p.hh

@@ -122,7 +122,7 @@ private:
 	QByteArray outputData;
 
 	QList<PageObject> objects;
-
+	QSize viewportSize;
 	QPrinter * printer;
 	QPainter * painter;
 	QString lout;

+ 2 - 1
src/lib/pdfsettings.cc

@@ -387,7 +387,8 @@ PdfGlobal::PdfGlobal():
 	documentTitle(""),
 	useCompression(true),
 	imageDPI(600),
-	imageQuality(94) {};
+	imageQuality(94),
+	viewportSize(""){};
 
 TableOfContent::TableOfContent():
 	useDottedLines(true),

+ 2 - 0
src/lib/pdfsettings.hh

@@ -139,6 +139,8 @@ struct DLL_PUBLIC PdfGlobal {
 	//! Specify the output format we should use
 	QString outputFormat;
 
+	QString viewportSize;
+
 	int imageDPI;
 	int imageQuality;
 

+ 1 - 0
src/pdf/pdfarguments.cc

@@ -234,6 +234,7 @@ PdfCommandLineParser::PdfCommandLineParser(PdfGlobal & s, QList<PdfObject> & ps)
 	mode(page);
  	addarg("default-header",0,"Add a default header, with the name of the page to the left, and the page number to the right, this is short for: --header-left='[webpage]' --header-right='[page]/[toPage]' --top 2cm --header-line", new Caller<DefaultHeaderFunc>());
 
+	addarg("viewport-size", 0, "Set viewport size if you have custom scrollbars or css attribute overflow to emulate window size",new QStrSetter(s.viewportSize,""));
 	addWebArgs(od.web);
 	extended(true);
  	qthack(false);