From a4b7af7fad45980bef96705d39f3b798eac2cb59 Mon Sep 17 00:00:00 2001 From: Mathieu Pellerin Date: Mon, 15 May 2017 06:23:29 +0700 Subject: [PATCH] Use millimeters when declaring QPrinter page size (This is needed to allow to set a resolution with the printer used by the map renderer) --- src/app/qgisapp.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index 60bee574eea..74782cb4453 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -5883,8 +5883,10 @@ void QgisApp::saveMapAsPdf() printer->setOutputFileName( fileName ); printer->setOutputFormat( QPrinter::PdfFormat ); printer->setOrientation( QPrinter::Portrait ); - printer->setPaperSize( dlg.size(), QPrinter::DevicePixel ); - printer->setPageMargins( 0, 0, 0, 0, QPrinter::DevicePixel ); + // paper size needs to be given in millimeters in order to be able to set a resolution to pass onto the map renderer + printer->setPaperSize( dlg.size() * 25.4 / dlg.dpi(), QPrinter::Millimeter ); + printer->setPageMargins( 0, 0, 0, 0, QPrinter::Millimeter ); + printer->setResolution( dlg.dpi() ); QPainter *p = new QPainter(); QImage *image = nullptr; @@ -5907,7 +5909,6 @@ void QgisApp::saveMapAsPdf() } else { - printer->setResolution( dlg.dpi() ); p->begin( printer ); }