79void QPdfPrintEngine::setProperty(PrintEnginePropertyKey key,
const QVariant &value)
90 case PPK_PaperSources:
92 case PPK_SupportsMultipleCopies:
94 case PPK_SupportedResolutions:
104 case PPK_CollateCopies:
105 d->collate = value.toBool();
108 switch (QPrinter::ColorMode(value.toInt())) {
109 case QPrinter::GrayScale:
110 d->colorModel = QPdfEngine::ColorModel::Grayscale;
112 case QPrinter::Color:
113 d->colorModel = QPdfEngine::ColorModel::Auto;
118 d->creator = value.toString();
120 case PPK_DocumentName:
121 d->title = value.toString();
125 d->m_pageLayout.setMode(QPageLayout::FullPageMode);
127 d->m_pageLayout.setMode(QPageLayout::StandardMode);
130 case PPK_NumberOfCopies:
131 d->copies = value.toInt();
133 case PPK_Orientation:
134 d->m_pageLayout.setOrientation(QPageLayout::Orientation(value.toInt()));
136 case PPK_OutputFileName:
137 d->outputFileName = value.toString();
140 d->pageOrder = QPrinter::PageOrder(value.toInt());
143 QPageSize pageSize = QPageSize(QPageSize::PageSizeId(value.toInt()));
144 if (pageSize.isValid())
145 d->m_pageLayout.setPageSize(pageSize);
148 case PPK_PaperName: {
149 QString name = value.toString();
150 for (
int i = 0; i <= QPageSize::LastPageSize; ++i) {
151 QPageSize pageSize = QPageSize(QPageSize::PageSizeId(i));
152 if (name == pageSize.name()) {
153 d->m_pageLayout.setPageSize(pageSize);
159 case PPK_WindowsPageSize:
160 d->m_pageLayout.setPageSize(QPageSize(QPageSize::id(value.toInt())));
162 case PPK_PaperSource:
163 d->paperSource = QPrinter::PaperSource(value.toInt());
165 case PPK_PrinterName:
166 d->printerName = value.toString();
168 case PPK_PrinterProgram:
169 d->printProgram = value.toString();
172 d->resolution = value.toInt();
174 case PPK_SelectionOption:
175 d->selectionOption = value.toString();
177 case PPK_FontEmbedding:
178 d->embedFonts = value.toBool();
180 case PPK_CustomPaperSize:
181 d->m_pageLayout.setPageSize(QPageSize(value.toSizeF(), QPageSize::Point));
183 case PPK_PageMargins: {
184 QList<QVariant> margins(value.toList());
185 Q_ASSERT(margins.size() == 4);
186 d->m_pageLayout.setUnits(QPageLayout::Point);
187 d->m_pageLayout.setMargins(QMarginsF(margins.at(0).toReal(), margins.at(1).toReal(),
188 margins.at(2).toReal(), margins.at(3).toReal()),
189 QPageLayout::OutOfBoundsPolicy::Clamp);
192 case PPK_QPageSize: {
193 QPageSize pageSize = qvariant_cast<QPageSize>(value);
194 if (pageSize.isValid())
195 d->m_pageLayout.setPageSize(pageSize);
198 case PPK_QPageMargins: {
199 auto pair = qvariant_cast<std::pair<QMarginsF, QPageLayout::Unit>>(value);
200 d->m_pageLayout.setUnits(pair.second);
201 d->m_pageLayout.setMargins(pair.first, QPageLayout::OutOfBoundsPolicy::Clamp);
204 case PPK_QPageLayout: {
205 QPageLayout pageLayout = qvariant_cast<QPageLayout>(value);
206 if (pageLayout.isValid())
207 d->m_pageLayout = pageLayout;
214QVariant QPdfPrintEngine::property(PrintEnginePropertyKey key)
const
216 Q_D(
const QPdfPrintEngine);
229 case PPK_CollateCopies:
233 ret = d->printerColorMode();
238 case PPK_DocumentName:
242 ret = d->m_pageLayout.mode() == QPageLayout::FullPageMode;
247 case PPK_SupportsMultipleCopies:
250 case PPK_NumberOfCopies:
253 case PPK_Orientation:
254 ret = d->m_pageLayout.orientation();
256 case PPK_OutputFileName:
257 ret = d->outputFileName;
263 ret = d->m_pageLayout.pageSize().id();
266 ret = d->m_pageLayout.pageSize().name();
268 case PPK_WindowsPageSize:
269 ret = d->m_pageLayout.pageSize().windowsId();
271 case PPK_PaperSource:
272 ret = d->paperSource;
274 case PPK_PrinterName:
275 ret = d->printerName;
277 case PPK_PrinterProgram:
278 ret = d->printProgram;
283 case PPK_SupportedResolutions:
284 ret = QList<QVariant>() << 72;
287 ret = d->m_pageLayout.fullRectPixels(d->resolution);
290 ret = d->m_pageLayout.paintRectPixels(d->resolution);
292 case PPK_SelectionOption:
293 ret = d->selectionOption;
295 case PPK_FontEmbedding:
298 case PPK_CustomPaperSize:
299 ret = d->m_pageLayout.fullRectPoints().size();
301 case PPK_PageMargins: {
302 QList<QVariant> list;
303 QMarginsF margins = d->m_pageLayout.margins(QPageLayout::Point);
304 list << margins.left() << margins.top() << margins.right() << margins.bottom();
309 ret.setValue(d->m_pageLayout.pageSize());
311 case PPK_QPageMargins: {
312 std::pair<QMarginsF, QPageLayout::Unit> pair(d->m_pageLayout.margins(), d->m_pageLayout.units());
316 case PPK_QPageLayout:
317 ret.setValue(d->m_pageLayout);
360QPdfPrintEnginePrivate::QPdfPrintEnginePrivate(QPrinter::PrinterMode m)
361 : QPdfEnginePrivate(),
364 pageOrder(QPrinter::FirstPageFirst),
365 paperSource(QPrinter::Auto),
369 if (m == QPrinter::HighResolution)
371 else if (m == QPrinter::ScreenResolution)
372 resolution = qt_defaultDpi();