From 1bb8627f8f1dea546f766a37888fe331381fa333 Mon Sep 17 00:00:00 2001 From: Andre de la Rocha Date: Thu, 6 Sep 2018 17:16:44 +0200 Subject: Extend PDF engine to allow the generation of PDFs with huge pages Qt's PDF engine previously supported only the PDF v1.4 standard, which only allows pages of up to 200x200in (about 5x5m). This patch optionally enables the generation of PDF v1.6-compliant files that allow the redefinition of user space units, so that pages of up to 381x381km are now possible. By default, generated files are compliant to v1.4 spec. v1.6 compliance must be enabled by, e.g., calling QPrinter::setPdfVersion() with QPrinter::PdfVersion_1_6. PDF v1.6-compliant files require Adobe Reader 7.0 or newer (also worked with the built-in viewers in current versions of Chrome, Firefox and Edge). Task-number: QTBUG-69386 Change-Id: I21708e0d465d5d7d9e46ff06dd04acfe1dfb0858 Reviewed-by: Friedemann Kleint Reviewed-by: Andy Shaw Reviewed-by: Oliver Wolff --- src/printsupport/kernel/qprinter.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/printsupport') diff --git a/src/printsupport/kernel/qprinter.cpp b/src/printsupport/kernel/qprinter.cpp index ed4292ff3d..829a13863b 100644 --- a/src/printsupport/kernel/qprinter.cpp +++ b/src/printsupport/kernel/qprinter.cpp @@ -149,7 +149,12 @@ void QPrinterPrivate::initEngines(QPrinter::OutputFormat format, const QPrinterI printEngine = ps->createNativePrintEngine(printerMode, printerName); paintEngine = ps->createPaintEngine(printEngine, printerMode); } else { - const auto pdfEngineVersion = (pdfVersion == QPrinter::PdfVersion_1_4 ? QPdfEngine::Version_1_4 : QPdfEngine::Version_A1b); + static const QHash engineMapping { + {QPrinter::PdfVersion_1_4, QPdfEngine::Version_1_4}, + {QPrinter::PdfVersion_A1b, QPdfEngine::Version_A1b}, + {QPrinter::PdfVersion_1_6, QPdfEngine::Version_1_6} + }; + const auto pdfEngineVersion = engineMapping.value(pdfVersion, QPdfEngine::Version_1_4); QPdfPrintEngine *pdfEngine = new QPdfPrintEngine(printerMode, pdfEngineVersion); paintEngine = pdfEngine; printEngine = pdfEngine; -- cgit v1.2.3