/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtGui module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QPRINTER_H #define QPRINTER_H #include #include #include #include #include QT_BEGIN_NAMESPACE #ifndef QT_NO_PRINTER #if defined(B0) #undef B0 // Terminal hang-up. We assume that you do not want that. #endif class QPrinterPrivate; class QPaintEngine; class QPrintEngine; class QPrinterInfo; class QPageSize; class QPageMargins; class Q_PRINTSUPPORT_EXPORT QPrinter : public QPagedPaintDevice { Q_DECLARE_PRIVATE(QPrinter) public: enum PrinterMode { ScreenResolution, PrinterResolution, HighResolution }; explicit QPrinter(PrinterMode mode = ScreenResolution); explicit QPrinter(const QPrinterInfo& printer, PrinterMode mode = ScreenResolution); ~QPrinter(); int devType() const; enum Orientation { Portrait, Landscape }; // ### Qt6 Remove in favor of QPage::PageSize // NOTE: Must keep in sync with QPageSize and QPagedPaintDevice #ifndef Q_QDOC typedef PageSize PaperSize; #else enum PaperSize { // Existing Qt sizes A4, B5, Letter, Legal, Executive, A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1, B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E, DLE, Folio, Ledger, Tabloid, Custom, // New values derived from PPD standard A10, A3Extra, A4Extra, A4Plus, A4Small, A5Extra, B5Extra, JisB0, JisB1, JisB2, JisB3, JisB4, JisB5, JisB6, JisB7, JisB8, JisB9, JisB10, // AnsiA = Letter, // AnsiB = Ledger, AnsiC, AnsiD, AnsiE, LegalExtra, LetterExtra, LetterPlus, LetterSmall, TabloidExtra, ArchA, ArchB, ArchC, ArchD, ArchE, Imperial7x9, Imperial8x10, Imperial9x11, Imperial9x12, Imperial10x11, Imperial10x13, Imperial10x14, Imperial12x11, Imperial15x11, ExecutiveStandard, Note, Quarto, Statement, SuperA, SuperB, Postcard, DoublePostcard, Prc16K, Prc32K, Prc32KBig, FanFoldUS, FanFoldGerman, FanFoldGermanLegal, EnvelopeB4, EnvelopeB5, EnvelopeB6, EnvelopeC0, EnvelopeC1, EnvelopeC2, EnvelopeC3, EnvelopeC4, // EnvelopeC5 = C5E, EnvelopeC6, EnvelopeC65, EnvelopeC7, // EnvelopeDL = DLE, Envelope9, // Envelope10 = Comm10E, Envelope11, Envelope12, Envelope14, EnvelopeMonarch, EnvelopePersonal, EnvelopeChou3, EnvelopeChou4, EnvelopeInvite, EnvelopeItalian, EnvelopeKaku2, EnvelopeKaku3, EnvelopePrc1, EnvelopePrc2, EnvelopePrc3, EnvelopePrc4, EnvelopePrc5, EnvelopePrc6, EnvelopePrc7, EnvelopePrc8, EnvelopePrc9, EnvelopePrc10, EnvelopeYou4, // Last item, with commonly used synynoms from QPagedPrintEngine / QPrinter LastPageSize = EnvelopeYou4, NPageSize = LastPageSize, NPaperSize = LastPageSize, // Convenience overloads for naming consistency AnsiA = Letter, AnsiB = Ledger, EnvelopeC5 = C5E, EnvelopeDL = DLE, Envelope10 = Comm10E }; #endif enum PageOrder { FirstPageFirst, LastPageFirst }; enum ColorMode { GrayScale, Color }; enum PaperSource { OnlyOne, Lower, Middle, Manual, Envelope, EnvelopeManual, Auto, Tractor, SmallFormat, LargeFormat, LargeCapacity, Cassette, FormSource, MaxPageSource, // Deprecated CustomSource, LastPaperSource = CustomSource, Upper = OnlyOne // As defined in Windows }; enum PrinterState { Idle, Active, Aborted, Error }; enum OutputFormat { NativeFormat, PdfFormat }; // Keep in sync with QAbstractPrintDialog::PrintRange enum PrintRange { AllPages, Selection, PageRange, CurrentPage }; enum Unit { Millimeter, Point, Inch, Pica, Didot, Cicero, DevicePixel }; enum DuplexMode { DuplexNone = 0, DuplexAuto, DuplexLongSide, DuplexShortSide }; void setOutputFormat(OutputFormat format); OutputFormat outputFormat() const; void setPrinterName(const QString &); QString printerName() const; bool isValid() const; void setOutputFileName(const QString &); QString outputFileName()const; void setPrintProgram(const QString &); QString printProgram() const; void setDocName(const QString &); QString docName() const; void setCreator(const QString &); QString creator() const; bool setPageLayout(const QPageLayout &pageLayout); bool setPageSize(const QPageSize &pageSize); bool setPageOrientation(QPageLayout::Orientation orientation); bool setPageMargins(const QMarginsF &margins, QPageLayout::Unit units); QPageLayout pageLayout() const; void setOrientation(Orientation); Orientation orientation() const; void setPageSize(PageSize); PageSize pageSize() const; void setPageSizeMM(const QSizeF &size); void setPaperSize(PaperSize); PaperSize paperSize() const; void setPaperSize(const QSizeF &paperSize, Unit unit); QSizeF paperSize(Unit unit) const; void setPaperName(const QString &paperName); QString paperName() const; void setPageOrder(PageOrder); PageOrder pageOrder() const; void setResolution(int); int resolution() const; void setColorMode(ColorMode); ColorMode colorMode() const; void setCollateCopies(bool collate); bool collateCopies() const; void setFullPage(bool); bool fullPage() const; void setNumCopies(int); int numCopies() const; int actualNumCopies() const; void setCopyCount(int); int copyCount() const; bool supportsMultipleCopies() const; void setPaperSource(PaperSource); PaperSource paperSource() const; void setDuplex(DuplexMode duplex); DuplexMode duplex() const; QList supportedResolutions() const; #ifdef Q_OS_WIN QList supportedPaperSources() const; #endif void setFontEmbeddingEnabled(bool enable); bool fontEmbeddingEnabled() const; void setDoubleSidedPrinting(bool enable); bool doubleSidedPrinting() const; #ifdef Q_OS_WIN void setWinPageSize(int winPageSize); int winPageSize() const; #endif QRect paperRect() const; QRect pageRect() const; QRectF paperRect(Unit) const; QRectF pageRect(Unit) const; QString printerSelectionOption() const; void setPrinterSelectionOption(const QString &); bool newPage(); bool abort(); PrinterState printerState() const; QPaintEngine *paintEngine() const; QPrintEngine *printEngine() const; void setFromTo(int fromPage, int toPage); int fromPage() const; int toPage() const; void setPrintRange(PrintRange range); PrintRange printRange() const; void setMargins(const Margins &m); void setPageMargins(qreal left, qreal top, qreal right, qreal bottom, Unit unit); void getPageMargins(qreal *left, qreal *top, qreal *right, qreal *bottom, Unit unit) const; protected: int metric(PaintDeviceMetric) const; void setEngines(QPrintEngine *printEngine, QPaintEngine *paintEngine); private: Q_DISABLE_COPY(QPrinter) QScopedPointer d_ptr; friend class QPrintDialogPrivate; friend class QAbstractPrintDialog; friend class QAbstractPrintDialogPrivate; friend class QPrintPreviewWidgetPrivate; friend class QTextDocument; friend class QPageSetupWidget; }; #endif // QT_NO_PRINTER QT_END_NAMESPACE #endif // QPRINTER_H