diff options
Diffstat (limited to 'src/printsupport/kernel/qprinter.cpp')
-rw-r--r-- | src/printsupport/kernel/qprinter.cpp | 47 |
1 files changed, 39 insertions, 8 deletions
diff --git a/src/printsupport/kernel/qprinter.cpp b/src/printsupport/kernel/qprinter.cpp index e2138512cc..8a2cdcb34f 100644 --- a/src/printsupport/kernel/qprinter.cpp +++ b/src/printsupport/kernel/qprinter.cpp @@ -132,7 +132,7 @@ void QPrinterPrivate::initEngines(QPrinter::OutputFormat format, const QPrinterI { // Default to PdfFormat outputFormat = QPrinter::PdfFormat; - QPlatformPrinterSupport *ps = 0; + QPlatformPrinterSupport *ps = nullptr; QString printerName; // Only set NativeFormat if we have a valid plugin and printer to use @@ -149,7 +149,8 @@ void QPrinterPrivate::initEngines(QPrinter::OutputFormat format, const QPrinterI printEngine = ps->createNativePrintEngine(printerMode, printerName); paintEngine = ps->createPaintEngine(printEngine, printerMode); } else { - QPdfPrintEngine *pdfEngine = new QPdfPrintEngine(printerMode); + const auto pdfEngineVersion = (pdfVersion == QPrinter::PdfVersion_1_4 ? QPdfEngine::Version_1_4 : QPdfEngine::Version_A1b); + QPdfPrintEngine *pdfEngine = new QPdfPrintEngine(printerMode, pdfEngineVersion); paintEngine = pdfEngine; printEngine = pdfEngine; } @@ -230,7 +231,7 @@ public: virtual ~QPrinterPagedPaintDevicePrivate() {} - bool setPageLayout(const QPageLayout &newPageLayout) Q_DECL_OVERRIDE + bool setPageLayout(const QPageLayout &newPageLayout) override { if (pd->paintEngine->type() != QPaintEngine::Pdf && pd->printEngine->printerState() == QPrinter::Active) { @@ -247,7 +248,7 @@ public: return pageLayout().isEquivalentTo(newPageLayout); } - bool setPageSize(const QPageSize &pageSize) Q_DECL_OVERRIDE + bool setPageSize(const QPageSize &pageSize) override { if (pd->paintEngine->type() != QPaintEngine::Pdf && pd->printEngine->printerState() == QPrinter::Active) { @@ -265,7 +266,7 @@ public: return pageLayout().pageSize().isEquivalentTo(pageSize); } - bool setPageOrientation(QPageLayout::Orientation orientation) Q_DECL_OVERRIDE + bool setPageOrientation(QPageLayout::Orientation orientation) override { // Set the print engine value pd->setProperty(QPrintEngine::PPK_Orientation, orientation); @@ -276,12 +277,12 @@ public: return pageLayout().orientation() == orientation; } - bool setPageMargins(const QMarginsF &margins) Q_DECL_OVERRIDE + bool setPageMargins(const QMarginsF &margins) override { return setPageMargins(margins, pageLayout().units()); } - bool setPageMargins(const QMarginsF &margins, QPageLayout::Unit units) Q_DECL_OVERRIDE + bool setPageMargins(const QMarginsF &margins, QPageLayout::Unit units) override { // Try to set print engine margins QPair<QMarginsF, QPageLayout::Unit> pair = qMakePair(margins, units); @@ -293,7 +294,7 @@ public: return pageLayout().margins() == margins && pageLayout().units() == units; } - QPageLayout pageLayout() const Q_DECL_OVERRIDE + QPageLayout pageLayout() const override { return pd->printEngine->property(QPrintEngine::PPK_QPageLayout).value<QPageLayout>(); } @@ -686,7 +687,37 @@ QPrinter::OutputFormat QPrinter::outputFormat() const return d->outputFormat; } +/*! + \since 5.10 + + Sets the PDF version for this printer to \a version. + + If \a version is the same value as currently set then no change will be made. +*/ +void QPrinter::setPdfVersion(PdfVersion version) +{ + Q_D(QPrinter); + + if (d->pdfVersion == version) + return; + + d->pdfVersion = version; + if (d->outputFormat == QPrinter::PdfFormat) { + d->changeEngines(d->outputFormat, QPrinterInfo()); + } +} + +/*! + \since 5.10 + + Returns the PDF version for this printer. The default is \c PdfVersion_1_4. +*/ +QPrinter::PdfVersion QPrinter::pdfVersion() const +{ + Q_D(const QPrinter); + return d->pdfVersion; +} /*! \internal */ |