Qt-Printing: Difference between revisions
No edit summary |
No edit summary |
||
(5 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Developing_Qt::Printing]] | |||
This is the hub page for the Qt Printing module. This page will link to developer documentation for the module. | This is the hub page for the Qt Printing module. This page will link to developer documentation for the module. | ||
The Qt Printing module maintainer is John Layt (jlayt on Devnet or johnlayt on | The Qt Printing module maintainer is John Layt (jlayt on Devnet or johnlayt on JIRA/Gerrit) <jlayt@kde.org>. | ||
==Qt 5.0 Status== | == Qt 5.0 Status == | ||
Status as at 2010-06-22 | Status as at 2010-06-22 | ||
[https://bugreports.qt.io/browse/QTBUG-25381 Qt 5.0 Release Task] | [https://bugreports.qt.io/browse/QTBUG-25381 Qt 5.0 Release Task] | ||
Linux - In Testing, mostly works | |||
macOS - In Testing, mostly works | |||
* Fonts rendered incorrectly, see https://bugreports.qt.io/browse/QTBUG-25555 | * Fonts rendered incorrectly, see https://bugreports.qt.io/browse/QTBUG-25555 | ||
Windows | Windows - Untested by me. | ||
Todo: | Todo: | ||
* Complete removal of QAbstractPageSetupWidget | * Complete removal of QAbstractPageSetupWidget | ||
* Still time for removal of QAbstractPrintDialog? | * Still time for removal of QAbstractPrintDialog? | ||
Line 30: | Line 32: | ||
* Review platform specific code still in core | * Review platform specific code still in core | ||
===Release criteria=== | === Release criteria === | ||
The following criteria must be met on all 3 platforms for release: | The following criteria must be met on all 3 platforms for release: | ||
Line 38: | Line 40: | ||
* Platform Plugin fully implemented for all required features | * Platform Plugin fully implemented for all required features | ||
* Print to printer tested visually, no font or layout issues | * Print to printer tested visually, no font or layout issues | ||
* Print to | * Print to PDF tested visually, no font or layout issues | ||
* Print dialog tested, all options function as expected | * Print dialog tested, all options function as expected | ||
The following tasks also performed: | The following tasks also performed: | ||
* API reviewed for any last clean-ups | |||
* | |||
* Build system reviewed | * Build system reviewed | ||
* Includes reviewed | * Includes reviewed | ||
Line 50: | Line 51: | ||
For testing painted output, use the example/richtext/textedit or Qt Assistant. | For testing painted output, use the example/richtext/textedit or Qt Assistant. | ||
==Bugs== | == Bugs == | ||
Bugs are assigned to the [https://bugreports.qt.io/browse/QTBUG/component/19140 | Bugs are assigned to the [https://bugreports.qt.io/browse/QTBUG/component/19140 GUI: Printing] component in JIRA. | ||
The following are Tasks to track specific areas within Qt Printing: | The following are Tasks to track specific areas within Qt Printing: | ||
[https://bugreports.qt.io/browse/QTBUG-25385 | [https://bugreports.qt.io/browse/QTBUG-25385 QTBUG-25385 QPrinter - New Printing Module requested features] <br> | ||
[https://bugreports.qt.io/browse/QTBUG-25384 QTBUG-25384 QPrinter - Windows related issues] <br> | |||
[https://bugreports.qt.io/browse/QTBUG-25383 QTBUG-25383 QPrinter - macOS related issues] <br> | |||
[https://bugreports.qt.io/browse/QTBUG-25381 QTBUG-25381 QPrinter - Qt 5.0 Release Task] <br> | |||
[https://bugreports.qt.io/browse/QTBUG-25380 QTBUG-25380 QPrinter - Page Size and Margin Related Issues] <br> | |||
[https://bugreports.qt.io/browse/QTBUG-25379 QTBUG-25379 QPrinter - PDF Generator Related Issues] <br> | |||
[https://bugreports.qt.io/browse/QTBUG-25378 QTBUG-25378 QPrinter - Font Related Issues] <br> | |||
[https://bugreports.qt.io/browse/QTBUG-25377 QTBUG-25377 QPrinter - Remote Printer Issues] <br> | |||
[https://bugreports.qt.io/browse/QTBUG-25372 QTBUG-25372 QPrinter - CUPS Settings In Linux Print Dialog] <br> | |||
==Qt 4 Printing Support in QtGui / QtWidgets== | == Qt 4 Printing Support in QtGui / QtWidgets == | ||
==Qt 5 QtPrintSupport Module== | == Qt 5 QtPrintSupport Module == | ||
The Qt 4 printing code was moved in a new library QtPrintingSupport and a new PrintSupport platform plugin. The code can be found in qtbase/src/printsupport and qtbase/plugins/printsupport | The Qt 4 printing code was moved in a new library QtPrintingSupport and a new PrintSupport platform plugin. The code can be found in qtbase/src/printsupport and qtbase/plugins/printsupport | ||
===QPrintEngine Keys=== | === QPrintEngine Keys === | ||
{| class=" | {| class="wikitable" | ||
! Key | !Key | ||
! Type | !Type | ||
! Win Set | !Win Set | ||
! Win Get | !Win Get | ||
! Mac Set | !Mac Set | ||
! Mac Get | !Mac Get | ||
! | !PDF Set | ||
! | !PDF Get | ||
! | !CUPS Set | ||
! | !CUPS Get | ||
|- | |- | ||
| | |PPK_CollateCopies | ||
| Setting | |Setting | ||
| y | |y | ||
| | |FALSE | ||
| n | |n | ||
| | |FALSE | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_ColorMode | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| n | |n | ||
| Color | |Color | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_Creator | ||
| Setting | |Setting | ||
| n | |n | ||
| | |NULL | ||
| n | |n | ||
| | |NULL | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_DocumentName | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| n | |n | ||
| | |NULL | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_FullPage | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_NumberOfCopies | ||
| Setting | |Setting | ||
| y | |y | ||
| 1 | |1 | ||
| y | |y | ||
| 1 | |1 | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| 1 | |1 | ||
|- | |- | ||
| | |PPK_Orientation | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_OutputFileName | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_PageOrder | ||
| Setting | |Setting | ||
| n | |n | ||
| | |NULL | ||
| n | |n | ||
| | |NULL | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_PageSize | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_PaperSize = PPK_PageSize | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_PaperSource | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| n | |n | ||
| | |NULL | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_PrinterName | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_PrinterProgram | ||
| Setting | |Setting | ||
| n | |n | ||
| | |NULL | ||
| n | |n | ||
| | |NULL | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_Resolution | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_SelectionOption | ||
| Setting | |Setting | ||
| n | |n | ||
| | |NULL | ||
| n | |n | ||
| | |NULL | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_WindowsPageSize | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| n | |n | ||
| | |NULL | ||
| n | |n | ||
| | |NULL | ||
| n | |n | ||
| | |NULL | ||
|- | |- | ||
| | |PPK_FontEmbedding | ||
| Setting | |Setting | ||
| n | |n | ||
| | |NULL | ||
| n | |n | ||
| | |NULL | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_Duplex | ||
| Setting | |Setting | ||
| n | |n | ||
| | |NULL | ||
| n | |n | ||
| | |NULL | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_CustomPaperSize | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_PageMargins | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_CopyCount | ||
| Setting | |Setting | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
| y | |y | ||
|- | |- | ||
| | |PPK_PageRect | ||
| Derived | |Derived | ||
| n | |n | ||
| y | |y | ||
| n | |n | ||
| y | |y | ||
| n | |n | ||
| y | |y | ||
| n | |n | ||
| y | |y | ||
|- | |- | ||
| | |PPK_PaperRect | ||
| Derived | |Derived | ||
| n | |n | ||
| y | |y | ||
| n | |n | ||
| y | |y | ||
| n | |n | ||
| y | |y | ||
| n | |n | ||
| y | |y | ||
|- | |- | ||
| | |PPK_SupportedResolutions | ||
| Feature | |Feature | ||
| n | |n | ||
| y | |y | ||
| n | |n | ||
| y | |y | ||
| n | |n | ||
| 72 | |72 | ||
| n | |n | ||
| 72 | |72 | ||
|- | |- | ||
| | |PPK_PaperSources | ||
| Feature | |Feature | ||
| n | |n | ||
| y | |y | ||
| n | |n | ||
| | |NULL | ||
| n | |n | ||
| | |NULL | ||
| n | |n | ||
| | |NULL | ||
|- | |- | ||
| | |PPK_SupportsMultipleCopies | ||
| Feature | |Feature | ||
| n | |n | ||
| | |TRUE | ||
| n | |n | ||
| | |TRUE | ||
| n | |n | ||
| | |FALSE | ||
| n | |n | ||
| | |TRUE | ||
|- | |- | ||
| | |PPK_SuppressSystemPrintStatus | ||
| Unused? | |Unused? | ||
| n | |n | ||
| | |NULL | ||
| n | |n | ||
| | |NULL | ||
| n | |n | ||
| | |NULL | ||
| n | |n | ||
| | |NULL | ||
|} | |} | ||
===Architecture= | === Architecture === | ||
=== macOS Differences === | |||
The macOS paint engine, print engine and print support plugin actually live in the Cocoa Platform Plugin in qtbase/src/plugins/platform/cocoa due to dependencies between the code. It is hoped to clean these up in a future release. | |||
== Qt 5 QtPrint Planning == | |||
Latest revision as of 22:06, 14 June 2016
This is the hub page for the Qt Printing module. This page will link to developer documentation for the module.
The Qt Printing module maintainer is John Layt (jlayt on Devnet or johnlayt on JIRA/Gerrit) <jlayt@kde.org>.
Qt 5.0 Status
Status as at 2010-06-22
Linux - In Testing, mostly works
macOS - In Testing, mostly works
- Fonts rendered incorrectly, see https://bugreports.qt.io/browse/QTBUG-25555
Windows - Untested by me.
Todo:
- Complete removal of QAbstractPageSetupWidget
- Still time for removal of QAbstractPrintDialog?
- Clean-ups and bug fixes in Linux print dialog
- Write a feature matrix for print support on different platforms
- Rewrite tst_qprinter to correctly test platform options per feature matrix, currently very broken
- Write manual printing test plan for features that cannot be auto tested
- Develop auto tests that add/delete printers to test QPrinterInfo
- Review platform specific code still in core
Release criteria
The following criteria must be met on all 3 platforms for release:
- No blocker bugs open
- All unit tests not failing, i.e. passing or skipped for valid reasons
- Platform Plugin fully implemented for all required features
- Print to printer tested visually, no font or layout issues
- Print to PDF tested visually, no font or layout issues
- Print dialog tested, all options function as expected
The following tasks also performed:
- API reviewed for any last clean-ups
- Build system reviewed
- Includes reviewed
- Documentation reviewed
For testing painted output, use the example/richtext/textedit or Qt Assistant.
Bugs
Bugs are assigned to the GUI: Printing component in JIRA.
The following are Tasks to track specific areas within Qt Printing:
QTBUG-25385 QPrinter - New Printing Module requested features
QTBUG-25384 QPrinter - Windows related issues
QTBUG-25383 QPrinter - macOS related issues
QTBUG-25381 QPrinter - Qt 5.0 Release Task
QTBUG-25380 QPrinter - Page Size and Margin Related Issues
QTBUG-25379 QPrinter - PDF Generator Related Issues
QTBUG-25378 QPrinter - Font Related Issues
QTBUG-25377 QPrinter - Remote Printer Issues
QTBUG-25372 QPrinter - CUPS Settings In Linux Print Dialog
Qt 4 Printing Support in QtGui / QtWidgets
Qt 5 QtPrintSupport Module
The Qt 4 printing code was moved in a new library QtPrintingSupport and a new PrintSupport platform plugin. The code can be found in qtbase/src/printsupport and qtbase/plugins/printsupport
QPrintEngine Keys
Key | Type | Win Set | Win Get | Mac Set | Mac Get | PDF Set | PDF Get | CUPS Set | CUPS Get |
---|---|---|---|---|---|---|---|---|---|
PPK_CollateCopies | Setting | y | FALSE | n | FALSE | y | y | y | y |
PPK_ColorMode | Setting | y | y | n | Color | y | y | y | y |
PPK_Creator | Setting | n | NULL | n | NULL | y | y | y | y |
PPK_DocumentName | Setting | y | y | n | NULL | y | y | y | y |
PPK_FullPage | Setting | y | y | y | y | y | y | y | y |
PPK_NumberOfCopies | Setting | y | 1 | y | 1 | y | y | y | 1 |
PPK_Orientation | Setting | y | y | y | y | y | y | y | y |
PPK_OutputFileName | Setting | y | y | y | y | y | y | y | y |
PPK_PageOrder | Setting | n | NULL | n | NULL | y | y | y | y |
PPK_PageSize | Setting | y | y | y | y | y | y | y | y |
PPK_PaperSize = PPK_PageSize | Setting | y | y | y | y | y | y | y | y |
PPK_PaperSource | Setting | y | y | n | NULL | y | y | y | y |
PPK_PrinterName | Setting | y | y | y | y | y | y | y | y |
PPK_PrinterProgram | Setting | n | NULL | n | NULL | y | y | y | y |
PPK_Resolution | Setting | y | y | y | y | y | y | y | y |
PPK_SelectionOption | Setting | n | NULL | n | NULL | y | y | y | y |
PPK_WindowsPageSize | Setting | y | y | n | NULL | n | NULL | n | NULL |
PPK_FontEmbedding | Setting | n | NULL | n | NULL | y | y | y | y |
PPK_Duplex | Setting | n | NULL | n | NULL | y | y | y | y |
PPK_CustomPaperSize | Setting | y | y | y | y | y | y | y | y |
PPK_PageMargins | Setting | y | y | y | y | y | y | y | y |
PPK_CopyCount | Setting | y | y | y | y | y | y | y | y |
PPK_PageRect | Derived | n | y | n | y | n | y | n | y |
PPK_PaperRect | Derived | n | y | n | y | n | y | n | y |
PPK_SupportedResolutions | Feature | n | y | n | y | n | 72 | n | 72 |
PPK_PaperSources | Feature | n | y | n | NULL | n | NULL | n | NULL |
PPK_SupportsMultipleCopies | Feature | n | TRUE | n | TRUE | n | FALSE | n | TRUE |
PPK_SuppressSystemPrintStatus | Unused? | n | NULL | n | NULL | n | NULL | n | NULL |
Architecture
macOS Differences
The macOS paint engine, print engine and print support plugin actually live in the Cocoa Platform Plugin in qtbase/src/plugins/platform/cocoa due to dependencies between the code. It is hoped to clean these up in a future release.