diff --git a/core/fileprinter.cpp b/core/fileprinter.cpp index c9b59ff07..e4e988b4d 100644 --- a/core/fileprinter.cpp +++ b/core/fileprinter.cpp @@ -417,6 +417,8 @@ QStringList FilePrinter::cupsOptions( QPrinter &printer ) optionList << optionCollateCopies( printer ); } + optionList << optionCupsProperties( printer ); + return optionList; } @@ -541,3 +543,19 @@ QStringList FilePrinter::optionCollateCopies( QPrinter &printer ) return QStringList("-o") << "Collate=False"; } +QStringList FilePrinter::optionCupsProperties( QPrinter &printer ) +{ + QStringList dialogOptions = printer.printEngine()->property(QPrintEngine::PrintEnginePropertyKey(0xfe00)).toStringList(); + QStringList cupsOptions; + + for ( int i = 0; i < dialogOptions.count(); i = i + 2 ) { + if ( dialogOptions[i+1].isEmpty() ) { + cupsOptions << "-o" << dialogOptions[i]; + } else { + cupsOptions << "-o" << dialogOptions[i] + "=" + dialogOptions[i+1]; + } + } + + return cupsOptions; +} + diff --git a/core/fileprinter.h b/core/fileprinter.h index b7ab1f2b7..c22eace1f 100644 --- a/core/fileprinter.h +++ b/core/fileprinter.h @@ -161,6 +161,7 @@ protected: QStringList optionDoubleSidedPrinting( QPrinter &printer ); QStringList optionPageOrder( QPrinter &printer ); QStringList optionCollateCopies( QPrinter &printer ); + QStringList optionCupsProperties( QPrinter &printer ); }; }