From 6e67130971de9ac379e0547e0c4fc264ca823401 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Mon, 28 Feb 2005 19:06:52 +0000 Subject: [PATCH] Backport printing fix as discussed on core-devel svn path=/branches/KDE_3_4_BRANCH/kdegraphics/kpdf/; revision=393871 --- core/generator_pdf/generator_pdf.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/core/generator_pdf/generator_pdf.cpp b/core/generator_pdf/generator_pdf.cpp index 01beda86a..24c288381 100644 --- a/core/generator_pdf/generator_pdf.cpp +++ b/core/generator_pdf/generator_pdf.cpp @@ -13,6 +13,8 @@ #include #include #include +#include +#include #include #include #include @@ -296,6 +298,28 @@ void PDFGenerator::generateSyncTextPage( KPDFPage * page ) bool PDFGenerator::print( KPrinter& printer ) { + QString ps = printer.option("PageSize"); + if (ps.find(QRegExp("w\\d+h\\d+")) == 0) + { + // size not supported by Qt, KPrinter gives us the size as wWIDTHhHEIGHT + // remove the w + ps = ps.mid(1); + int hPos = ps.find("h"); + globalParams->setPSPaperWidth(ps.left(hPos).toInt()); + globalParams->setPSPaperHeight(ps.mid(hPos+1).toInt()); + } + else + { + // size is supported by Qt, we get either the pageSize name or nothing because the default pageSize is used + QPrinter dummy(QPrinter::PrinterResolution); + dummy.setFullPage(true); + dummy.setPageSize((QPrinter::PageSize)(ps.isEmpty() ? KGlobal::locale()->pageSize() : pageNameToPageSize(ps))); + + QPaintDeviceMetrics metrics(&dummy); + globalParams->setPSPaperWidth(metrics.width()); + globalParams->setPSPaperHeight(metrics.height()); + } + KTempFile tf( QString::null, ".ps" ); PSOutputDev *psOut = new PSOutputDev(tf.name().latin1(), pdfdoc->getXRef(), pdfdoc->getCatalog(), 1, pdfdoc->getNumPages(), psModePS);