113.PyQt5_QtPrintSupport_打印操作

无奋斗不青春

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集👈👈

分隔线

前言

  • 打印图像是图像处理软件中的一个常用功能,打印图像实际上是在QPaintDevice中画图,与平时在QWidgetQPixmapQImage中画图是一样的,都是创建一个QPainter对象进行画图的
  • 只是打印使用的是QPrinter,它的本质上也是一个QPaintDevice(绘图设备)
  • 打印预览是通过QtPrintSupport模块中的 QPrintPreviewWidget 或者 QPrintPreviewDialog 来实现
QPagedPaintDevice(QPaintDevice)                         # 支持多个页面的PaintDevice (绘图设备)

QtPrintSupport.py
    QPrinter(PyQt5.QtGui.QPagedPaintDevice)             # 在打印机上作画的装置
    QPrintPreviewWidget(PyQt5.QtWidgets.QWidget)        # 用于预览打印机输出的页面布局的小部件
    QPrintPreviewDialog(PyQt5.QtWidgets.QDialog)        # 用于预览和配置打印机输出的页面布局的对话框
    QPageSetupDialog(PyQt5.QtWidgets.QDialog)           # 配置对话框,用于打印机上与页面相关的选项
    QAbstractPrintDialog(PyQt5.QtWidgets.QDialog)       # 用于配置打印机的打印对话框的基本实现
        QPrintDialog(QAbstractPrintDialog)              # 用于指定打印机配置的对话框
    QPrintEngine(sip.simplewrapper)                     # 定义QPrinter与给定打印子系统交互的接口
    QPrinterInfo(sip.simplewrapper)                     # 提供对现有打印机信息的访问


QPaintDevice
  • 描述
    • QPaintDevice类是可以用QPainter绘制的对象的基类
    • QPaintDevice的绘图功能目前由QWidget、qmage、QPixmap、QGLPixelBuffer、QPicture和QPrinter子类实现
    • 为了实现对新后端的支持,您必须从QPaintDevice派生并重新实现虚拟paintenengine)函数,以告诉QPainter应该使用哪个绘制引擎在这个特定的设备上绘制
    • 还必须创建一个相应的绘画引擎,以便能够在设备上绘画,即从qpaintenengine派生并重新实现其虚拟功能
  • 继承自:qmage, QOpenGLPaintDevice, QPagedPaintDevice, QPaintDeviceWindow, QPicture, QPixmap, QSvgGenerator, QWidget
  • 常用API
    QPaintDevice    类提供了几个返回各种设备度量的函数
    depth()                 # 返回其位深度(位平面的数量)
    height()                # 以默认坐标系单位(例如QPixmap和QWidget的像素)返回其高度
    heightMM()              # 以毫米为单位返回设备的高度
    width()                 # 分别以默认坐标系单位返回设备的宽度
    widthMM()               # 分别以毫米为单位返回设备的宽度
    
    metric()                # 通过指定所需的PaintDeviceMetric作为参数来检索度量信息
    logicalDpiX()
    logicalDpiY()           # 返回设备的水平和垂直分辨率,单位为每英寸点数
    physicalDpiX()
    physicalDpiY()          # 返回设备的分辨率(单位为每英寸点数)
        # 如果逻辑和物理分辨率不同,相应的qpaintenengine必须处理映射
    colorCount()            # 函数返回绘制设备可用的不同颜色的数量
    

QPagedPaintDevice
  • 描述
    • QPagedPaintDevice 类代表了一个支持多个页面的 PaintDevice (绘图设备)
    • 分页绘制设备用于生成打印或PDF等格式的输出
    • QPdfWriter 和 QPrinter 继承自它
  • 继承自:QPaintDevice
  • 常用API
    margins()                           # 返回绘制设备的当前边距。默认值为0,单位是毫米
    setMargins(Margins)                 # 设置要使用的页边距为页边距。
    # 边距纯粹是对绘制方法的提示。它们不影响坐标系统或裁剪。
    setPageMargins(QMarginsF)bool    # 设置页边距
    
    pageLayout()                        # 返回当前页面布局
        # 使用这个方法可以访问当前的QPageSize、Orientation、QMarginsF、fullRect()和paintRect()。
        # 注意:不能在返回的对象上使用setter,您必须调用单独的QPagedPaintDevice.setter或使用setPageLayout()
    setPageLayout(QPageLayout)bool   # 设置页面布局
    
    pageSize()                          # 返回当前使用的页面大小
    pageSizeMM()                        # 返回以毫米为单位的页面大小
    
    setPageSize(PageSize)               # 设置页面大小为size。
    setPageSizeMM(QSizeF)               # 设置页面大小为size,尺寸以毫米为单位指定。
        # 如果大小与标准PageSize匹配,则使用该页面大小,否则将设置Custom。
    
    setPageOrientation(Orientation)bool      # 设置页面方向
    


QtPrintSupport
  • PyQt为打印提供了广泛的跨平台支持。使用每个平台上的打印系统,PyQt应用程序可以打印到连接的打印机上,也可以通过网络打印到远程打印机上。
  • PyQt的打印系统还支持PDF文件生成,为基本报表生成工具提供了基础
  • 在PyQt中,打印机由QPrinter表示,QPrinter是一个绘图设备,它提供了特定于打印的功能,例如支持多页和双面输出。因此,打印需要使用QPainter在一系
    列页面上进行绘制,就像在自定义小部件或图像上进行绘制一样
  • 包含类
    QtPrintSupport.py
    QAbstractPrintDialog(PyQt5.QtWidgets.QDialog)       # 用于配置打印机的打印对话框的基本实现
    QPrintDialog(QAbstractPrintDialog)                  # 用于指定打印机配置的对话框
    QPageSetupDialog(PyQt5.QtWidgets.QDialog)           # 配置对话框,用于打印机上与页面相关的选项
    
    QPrinter(PyQt5.QtGui.QPagedPaintDevice)             # 在打印机上作画的装置
    
    QPrintPreviewWidget(PyQt5.QtWidgets.QWidget)        # 用于预览打印机输出的页面布局的小部件
    QPrintPreviewDialog(PyQt5.QtWidgets.QDialog)        # 用于预览和配置打印机输出的页面布局的对话框
    
    QPrintEngine(sip.simplewrapper)                     # 定义QPrinter与给定打印子系统交互的接口
    QPrinterInfo(sip.simplewrapper)                     # 提供对现有打印机信息的访问
    

QAbstractPrintDialog
  • 描述
    • QAbstractPrintDialog类提供了一个基实现,用于配置打印机的打印对话框
    • 这个类实现了用于自定义打印对话框中显示的设置getter和setter函数,但它不能直接使用。使用QPrintDialog在你的应用程序中显示打印对话框
  • 继承自:QDialog
  • 常用API
    QAbstractPrintDialog(QPrinter, parent: QWidget = None)  # 构造函数
    exec()int
    exec_()int                       # 这个虚函数被调用,弹出对话框。它必须重新实现在子类中
    
    printer() → QPrinter                # 返回此打印机对话框所操作的打印机
    
    fromPage()int                    # 返回要打印的第一页,默认值为0
    toPage()int                      # 返回要打印的最后一页,默认值为0
    
    maxPage()int                     # 返回打印范围中的最大页
    minPage()int                     # 返回打印范围中的最小页
    printRange() → PrintRange           # 返回打印范围
    
    setPrintRange(PrintRange)           # 设置打印对话框中的打印范围
    setFromTo(m, n)                     # 设置打印对话框中的范围从m到n
    setMinMax(int, int)                 # 将打印对话框中的页范围设置为从最小到最大
        # 会启用PrintPageRange选项
    setOptionTabs(Iterable[QWidget])    # 如果支持,将小部件列表设置为在打印对话框中显示的选项卡。
        # 目前这个选项只在X11上受支持。
        # 设置选项卡将把它们的所有权转移到打印对话框
    
    enabledOptions() → PrintDialogOptions
    setEnabledOptions(Union[PrintDialogOptions, PrintDialogOption])
    
    QAbstractPrintDialog.PrintDialogOption      # 用于指定打印对话框的部分应该是可见的
        # QAbstractPrintDialog.None                 # 没有一个选项被启用。
        # QAbstractPrintDialog.PrintToFile          # 到文件选项打印已启用。
        # QAbstractPrintDialog.PrintSelection       # 打印选择的选项被启用。
        # QAbstractPrintDialog.PrintPageRange       # 页面范围选择的选项被启用。
        # QAbstractPrintDialog.PrintShowPageSize    # 显示页面大小+页边距仅当启用此功能。
        # QAbstractPrintDialog.PrintCollateCopies   # 启用了分页复印选项
        # QAbstractPrintDialog.PrintCurrentPage     # 打印当前页面的选项被启用
        
    QAbstractPrintDialog.PrintRange                 # 用于指定打印范围选择选项
        # QAbstractPrintDialog.AllPages             # 0 所有网页应打印。
        # QAbstractPrintDialog.Selection            # 1 唯一的选择应打印。
        # QAbstractPrintDialog.PageRange            # 2 指定页面范围应打印。
        # QAbstractPrintDialog.CurrentPage          # 3 只有当前可见的页面应该被打印出来
    

QPrintDialog
  • 描述
    • QPrintDialog是一个用于显示打印对话框的类
    • 该对话框允许用户更改与文档相关的设置,例如纸张大小和方向、打印类型(彩色或灰度)、页面范围和要打印的副本数量
    • 还提供了控件,使用户能够从可用的打印机(包括任何已配置的网络打印机)中进行选择
    • 通常,OPrintDialog对象是用OPrinter对象构造的,并使用exec()函数执行
  • 继承自:QAbstractPrintDialog
  • 常用API
    # 构造函数
    QPrintDialog(parent: QWidget = None)                        # 实例化一个打印对话框对象
    QPrintDialog(QPrinter, parent: QWidget = None)              # 实例化一个打印对话框对象,并关联给定的打印机对象
    
    exec()int                                                # 显示打印对话框并执行事件循环
    exec_()int
        # 返回用户点击的按钮:QDialog.Accepted(打印)或QDialog.Rejected(取消)
    open()                                                      # 显示打印对话框并执行事件循环
    open(PYQT_SLOT)                                             # 显示打印对话框并执行事件循环
        # 打开对话框并将其accept()信号连接到由接收器和成员指定的插槽
        # 当对话框关闭时,信号将从插槽断开
    
    printer()                                                   # 获取与打印对话框所操作的打印机对象
        # 这在使用QPrintDialog.open()方法时非常有用
    setPrinter(QPrinter *printer)                               # 设置与打印对话框关联的打印机对象
            
    options()                                                   # 获取打印对话框的选项
    testOption(PrintDialogOption)bool                        # 检查打印对话框指定的选项是否被启用
    setOption(PrintDialogOption option, bool on = true)         # 设置打印对话框的选项,影响对话框外观的各种选项
        # 如果on为true,则设置给定选项为启用;否则,清除给定的选项
    setOptions(Union[PrintDialogOptions, PrintDialogOption])
    
    done(int)                                                   # 关闭对话框并将其结果代码设置为result
        # 如果这个对话框是用exec()显示的,done会导致本地事件循环完成,exec()返回结果
    
  • 可用信号
    accepted()
    accepted(QPrinter)      # 当用户接受打印对话框中设置的值时,就会发出这个信号。打印机参数包括应用设置的打印机
    

QPageSetupDialog
  • 描述
    • QPageSetupDialog类为打印机上与页面相关的选项提供了一个配置对话框
    • 在Windows和macoS上,页面设置对话框是使用本机页面设置对话框实现的。
    • 请注意,在Windows和macOS上,自定义纸张大小不会反映在本机页面设置对话框中
    • 此外,在QPrinter上设置的自定义页边距不会显示在本机macoS页面设置对话框中
  • 继承自:QDialog
  • 常用API
# 构造函数
QPageSetupDialog()                                                      # 构造一个页面设置对话框
QPageSetupDialog(QWidget *parent = nullptr)                             # 构造一个页面设置对话框,并设置父控件
QPageSetupDialog(QPrinter *printer, QWidget *parent = nullptr)          # 构造一个页面设置对话框,在配置一个默认构造的QPrinter的同时设置父控件


printer()                                                               # 获取传递给QPageSetupDialog构造函数的打印机

done(int result)
exec()                                                                  # 调用这个虚函数来弹出对话框。它必须在子类中重新实现
open(QObject *receiver, const char *member)                             # 打开对话框并将其accept()信号连接到由接收器和成员指定的插槽
    # 当对话框关闭时,信号将从插槽断开

QPrinter
  • 描述
    • QPrinter类是一个绘图设备,用于在打印机上绘图
    • 该设备表示一系列的打印输出页面,其使用方式与其他绘画设备(如:QWidget和QPixmap)几乎完全相同
    • 提供了组附加功能来管理特定于设备的特性,例如方向和分辨率,并在生成文档时逐步遍历文档中的页面
    • 当直接打印到Windows或macos上的打印机时,OPrinter使用内置的打印机驱动程序
    • 在X11上,QPrinter使用通用Unix打印系统(CUPS)将PDF输出发送到打印机。作为一种选择,printProgram(函数可用于指定要使用的命令或实用程序,而不是系统默认值
    • 请注意,在无效打印机上设置纸张大小和分辨率等参数是未定义的。你可以用Printer.isValid()在更改任何参数之前验证这一点
    • QPrinter支持许多参数,最终用户可以通过打印对话框更改其中的大多数参数。在一般来说,QPrinter将这些函数传递给底层的qprintenengine
    • 当QPainter.begin()被调用时,它所操作的QPrinter已经为一个新的页面做好了准备,这使得QPainter可以立即用于绘制文档中的第一页。
    • 一旦绘制了第一页,就可以调用newPage(来请求绘制新的空白页,或者调用QPainter.end()来完成打印。
    • 在绘制第二页和后面的所有页面之前,使用对newPage()的调用来准备它们
    • 文档中的第一页不需要先调用newPage()。只有在需要在打印文档的开头插入空白页时,才需要在QPainter.begin()之后调用newPage()
    • 类似地,在绘制文档中的最后一页后调用newPage()将导致在打印文档的末尾追加一个空白页
    • 如果要中止打印作业,abort()将尽力停止打印。它可能会取消整个作业或只是部分作业
    • 由于QPrinter可以打印到任何QPrintEngine的子类,因此可以通过创建OPrintEngine的子类并重新实现其接口来扩展打印支持,以覆盖新的打印子系统类型
  • 继承自:QPagedPaintDevice
  • 枚举类型
    # 打印颜色
    QPrinter.ColorMode
        QPrinter.Color	                # 1	如果可用,以彩色打印,否则以灰度打印
        QPrinter.GrayScale	            # 0	以灰度打印,即使在彩色打印机上也是如此
        
    # 单双面打印
    QPrinter.DuplexMode
        QPrinter.DuplexNone             # 0	单面打印
        QPrinter.DuplexAuto             # 1	打印机的默认设置,用于确定是否使用双面打印
        QPrinter.DuplexLongSide         # 2	双面打印,长边翻转
        QPrinter.DuplexShortSide        # 3	双面打印,短边翻转
    
    # 打印方向
    # 此枚举类型(不要与Orientation混淆)用于指定每个页面的方向
    QPrinter.Orientation
        QPrinter.Portrait               # 0	纵向,页面的高度大于宽度
        QPrinter.Landscape              # 1	横向,页面的宽度大于高度
    
    # 打印格式    
    QPrinter.OutputFormat
        QPrinter.NativeFormat           # 0 QPrinter将使用它运行的平台定义的方法打印输出。当直接打印到打印机时,此模式是默认的
        QPrinter.PdfFormat              # 1 QPrinter将生成一个可搜索的PDF文件。当打印到文件时,此模式是默认的
    
    # 打印顺序
    QPrinter.PageOrder
        QPrinter.FirstPageFirst         # 0 编号最低的那一页优先打印
        QPrinter.LastPageFirst          # 1 编号最高的那一页优先打印
        
    # 纸张大小
    # QPrinter不检查纸张尺寸是否可用;它只是使用这些信息
    # 连同QPrinter.Orientation 和QPrinter.setFullPage(),来确定可打印的区域
    QPrinter.PaperSize
        # 标准Postscript和Windows Executive大小
        QPageSize.ExecutiveStandard
        # 标准Postscript和Windows DMPAPER_FOLIO大小
        QPageSize.FanFoldGermanLegal
            QPageSize.PageSizeId.A0
            ...
            QPageSize.PageSizeId.LastPageSize
        
        # Letter、Legal、Folio、Executive是纸张尺寸的意思
        # 应用于加拿大、美国和墨西哥等国家
        # 各自的尺寸:
            # Letter    216毫米x279毫米
            # Legal     216毫米×356毫米
            # Folio     216毫米×330毫米
            # Executive 184毫米x267毫米
    # 纸张大小还可以使用QPagedPaintDevice枚举
        QPagedPaintDevice.A0
        ...
        QPagedPaintDevice.LastPageSize
    
    # 纸张来源(仅Windows有效)
    # 是否会设置纸张来源取决于打印机是否具有该特定来源
    QPrinter.PaperSource
        QPrinter::Auto
        ...
        QPrinter.LastPaperSource
        
    # 打印范围
    QPrinter.PrintRange
        QPrinter.AllPages          # 0 打印所有页面
        QPrinter.Selection         # 1 打印选定内容
        QPrinter.PageRange         # 2 打印指定的页面范围
        QPrinter.CurrentPage       # 3 只打印当前页面
    
    # 打印模式(分辨率)
    QPrinter.PrinterMode
        QPrinter.ScreenResolution       # 0 将打印设备的分辨率设置为屏幕分辨率
        QPrinter.PrinterResolution      # 1 此值已弃用
        QPrinter.HighResolution         # 2 将打印机分辨率设置为为正在使用的打印机定义的分辨率
        
    # 打印设备状态
    QPrinter.PrinterState
        QPrinter.Idle               # 0 空闲
        QPrinter.Active             # 1 活跃的
        QPrinter.Aborted            # 2 异常中止连接
        QPrinter.Error              # 3 错误
        
    # 指定页面和纸张大小的测量单位
    QPrinter.Unit
        QPrinter.Millimeter         # 0 毫米
        QPrinter.Point              # 1 单位被定义为1/72英寸
        QPrinter.Inch               # 2 英寸
        QPrinter.Pica               # 3 
        QPrinter.Didot              # 4
        QPrinter.Cicero             # 5
        QPrinter.DevicePixel        # 6 单位与分辨率有关,并基于打印机上的实际像素或点
    
    
  • 常用API
    # 构造函数
    # 实例化打印机对象
    QPrinter()
    # 实例化打印机对象,并指定打印机信息和打印模式
    QPrinter(const QPrinterInfo &printer, QPrinter.PrinterMode mode = ScreenResolution)
    # 实例化打印机对象,并指定模式
    QPrinter(QPrinter.PrinterMode mode = ScreenResolution)
    
    abort()                 # 中止当前的打印运行
        # 如果打印运行被成功中止,则返回true, PrinterState()将返回QPrinter.aborted;
        # 如果打印运行中止失败,则返回false
        # 并非总是可以中止打印作业。例如,所有数据都已发送到打印机,但打印机不能或不会在被要求取消作业时取消该作业
    collateCopies()             # 返回是否启用选择多个副本
    colorMode()                 # 返回当前颜色模式
    copyCount()                 # 返回要打印的拷贝数。缺省值为1
    creator()                   # 返回创建文档的应用程序的名称
    docName()                   # 返回文档名称
    duplex()                    # 返回当前双工模式
    fontEmbeddingEnabled()      # 如果启用了字体嵌入,则返回true
    fromPage()                  # 返回要打印的页面范围中第一页的页码
        # 默认情况下,返回0,表示“from page”设置未设置
    fullPage()                  # 返回打印机坐标系统的原点是否在页面的角上
    isValid()                   # 返回当前选择的打印机是否有效,或者是纯PDF打印机
    newPage()                   # 弹出当前页面并在新页面上继续打印。如果成功返回true;否则返回false
        # 在非活动QPrinter对象上调用newPage()总是会失败
    outputFileName()            # 返回输出文件的名称。默认是空字符串(表示打印机不应该打印到file)
    outputFormat()              # 返回此打印机的输出格式
    pageLayout()                # 返回当前页面布局
    pageOrder()                 # 返回当前页面顺序
    pageRect(QPrinter.Unit)     # 以指定单位返回打印区域大小
    paperRect(QPrinter.Unit)    # 以指定单位返回纸张的大小
    paperSource()               # 返回打印机的纸张源(手动或托盘或纸盒)
    pdfVersion()                # 返回此打印机的PDF版本。默认为PdfVersion_1_4
    printEngine()               # 返回打印机使用的打印引擎
    printProgram()              # 返回将打印输出发送到打印机的程序的名称
    printRange()                # 返回QPrinter的页面范围。打开打印设置对话框后,该函数返回用户选择的值
    printerName()               # 返回打印机名称。该值最初设置为默认打印机的名称
    printerSelectionOption()    # 返回打印机选项选择字符串,默认返回空字符串,意味着以与系统相关的方式选择打印机
    printerState()              # 返回打印机的当前状态。这可能并不总是准确的
    resolution()                # 返回当前假定的打印机分辨率,由setResolution()或打印机驱动程序设置
    supportedPaperSources()                         # 返回此打印机支持的纸张大小。仅在windows中可用
    supportedResolutions()                          # 返回打印机表示支持的分辨率列表(每英寸点整数列表)
    supportsMultipleCopies()                        # 打印机是否支持在一个作业中打印同一文档的多个副本
    toPage()                                        # 返回要打印的页面范围中最后一页的页码
    
    PaintEngine()
    
    
    setOrientation()                                # 设置页面方向
    setPaperSize()                                  # 设置纸张大小
    setResolution(int dpi)                          # 设置分辨率,单位是每英寸点(DPI)。
    setFullPage(bool fp)                            # 如果fp为true,则支持在整个页面上绘制;否则将绘画限制在设备报告的可打印区域。
    setCopyCount(int count)                         # 设置打印份数
    setEngines(QPrintEngine *printEngine, QPaintEngine *paintEngine)    # QPrinter的子类使用这个函数来指定自定义打印和绘制引擎(分别是printenengine和paintenengine)
    setCollateCopies(bool collate)                  # 设置出现打印对话框时排序复选框的默认值
    setColorMode(QPrinter.ColorMode newColorMode)   # 设置打印机的颜色模式
    setCreator(const QString &creator)              # 设置创建文档的应用程序的名称
    setDocName(const QString &name)                 # 设置文档名称,文档名称不会影响文件名
    setDuplex(QPrinter.DuplexMode duplex)           # 启用基于双面模式的双面打印
    setFontEmbeddingEnabled(bool enable)            # 是否启用字体嵌入 
    setFromTo(int from, int to)                     # 设置要打印的页面范围,由from和to指定编号的页面
        # from和to都设置为0,则将打印整个文档
    setOutputFileName(const QString &fileName)      # 设置输出文件的名称
        # 文件名称设置为null或空名称(0或"")将禁用打印到文件。设置非空名称可以打印到文件
    setOutputFormat(QPrinter.OutputFormat format)   # 设置此打印机要格式化的输出格式
    setPageLayout(const QPageLayout &newLayout)     # 设置页面布局
    setPageMargins(const QMarginsF &margins)        # 使用当前单位设置页边距为页边距。如果成功设置页边距,则返回true
    setPageMargins(const QMarginsF &margins, QPageLayout.Unit units)    # 设置页边距为给定单位的页边距。如果没有提供单位,则使用当前单位
    setPageOrder(QPrinter.PageOrder pageOrder)      # 设置页面打印顺序
    setPageOrientation(QPageLayout.Orientation orientation) # 设置页面方向为纵向或横向
    setPageSize(const QPageSize &pageSize)          # 设置页面大小
    setPaperSource(QPrinter.PaperSource source)     # 设置纸张源
    setPdfVersion(QPagedPaintDevice.PdfVersion version)     # 设置打印机的PDF版本
    setPrintProgram(const QString &printProg)       # 设置将应该执行打印作业的程序的名称
    setPrintRange(QPrinter.PrintRange range)        # 设置打印范围选项
    setPrinterName(const QString &name)             # 设置打印机名称
        # 如果名称为空,则输出格式将设置为PdfFormat。
        # 如果名称不是有效的打印机,则不会进行更改。
        # 如果名称是有效的打印机,则输出格式将设置为NativeFormat
    setPrinterSelectionOption(const QString &option)    # 设置打印机使用选项来选择打印机
    setMargins(const QPagedPaintDevice.Margins &m)
    

QPrintPreviewWidget
  • 描述
    • QPrintPreviewWidget类提供了一个小部件,用于预览打印机输出的页面布局
    • QPrintPreviewDialog在内部使用QPrintPreviewWidget,QPrintPreviewWidget的目的是使预览嵌入到其他小部件中成为可能。
    • 它还使得围绕它构建一个不同于QPrintPreviewDialog提供的默认用户界面的用户界面成为可能
  • 继承自:QWidget
  • 枚举
    # 描述预览小部件的视图模式
    QPrintPreviewWidget.ViewMode
        QPrintPreviewWidget.SinglePageView     # 0 查看预览中的单个页面的模式
        QPrintPreviewWidget.FacingPagesView    # 1 一种模式,在这种模式下,预览中的面向页被查看
        QPrintPreviewWidget.AllPagesView       # 2 查看模式,其中查看预览中的所有页面
    
    # 描述预览小部件的缩放模式
    QPrintPreviewWidget.ZoomMode
        QPrintPreviewWidget.CustomZoom          # 0 缩放设置为自定义缩放值
        QPrintPreviewWidget.FitToWidth          # 1 此模式使当前页面适合于视图的宽度
        QPrintPreviewWidget.FitInView           # 2 此模式适合视图内的当前页面
    
  • 常用API
    # 构造函数
    # 构造一个QPrintPreviewWidget对象
    QPrintPreviewWidget()
    # 构造一个QPrintPreviewWidget对象,指定父控件的同时设置窗口标志
    QPrintPreviewWidget(QWidget *parent = nullptr, Qt.WindowFlags flags = Qt.WindowFlags())
    # 构造一个基于打印机的QPrintPreviewWidget对象,指定父控件的同时设置窗口标志
    QPrintPreviewWidget(QPrinter *printer, QWidget *parent = nullptr, Qt.WindowFlags flags = Qt.WindowFlags())
    
    currentPage()                   # 返回预览中当前查看的页面
    orientation()                   # 返回预览的当前方向
    pageCount()                     # 返回预览中的页数
    viewMode()                      # 返回当前视图模式。默认的视图模式是SinglePageView
    zoomFactor()                    # 返回视图的缩放系数
    zoomMode()                      # 返回当前缩放模式
    
    setVisible(bool visible) 
    
    print()                         # 将预览打印到与预览相关联的打印机
    updatePreview()                 # 更新预览,这会导致paintrerequested()信号被发出
    zoomIn(qreal factor = 1.1)      # 按比例放大当前视图。factor的默认值是1.1
    zoomOut(qreal factor = 1.1)     # 按比例缩小当前视图。factor的默认值是1.1
    
    setViewMode(QPrintPreviewWidget.ViewMode mode)      # 根据索引设置视图模式。默认的视图模式是SinglePageView
    setAllPagesViewMode()           # 设置视图模式为AllPagesView,与调用 setViewMode(QPrintPreviewWidget.AllPagesView)相同
    setFacingPagesViewMode()        # 设置视图模式为FacingPagesView,与调用 setViewMode(QPrintPreviewWidget.FacingPagesView)相同
    setSinglePageViewMode()         # 设置视图模式为SinglePageView,与调用 setViewMode(QPrintPreviewWidget.SinglePageView)相同
    
    setCurrentPage(int page)        # 在预览中设置当前页面。这将导致视图跳转到页面的开头
    
    setOrientation(QPrinter.Orientation orientation)    # 根据索引设置当前方向
    setLandscapeOrientation()       # 设置当前方向为Landscape,与调用setOrientation(QPrinter.Landscape)相同
    setPortraitOrientation()        # 设置当前方向为Portrait,与调用 setOrientation(QPrinter.Portrait)相同
    
    setZoomFactor(qreal factor)     # 设置视图的缩放系数
    
    setZoomMode(QPrintPreviewWidget.ZoomMode zoomMode)  # 根据索引设置缩放模式。默认的缩放模式是FitInView
    fitInView()                     # 设置缩放模式为FitInView,与调用setZoomMode(QPrintPreviewWidget.FitInView)相同
    fitToWidth()                    # 设置缩放模式为FitToWidth,与调用setZoomMode(QPrintPreviewWidget.FitToWidth)相同
    
  • 可用信号
    paintRequested(QPrinter *printer)       # 当预览小部件需要生成一组预览页面时,就会发出这个信号,Printer是与这个预览小部件关联的打印机
    previewChanged()                        # 每当预览小部件改变了某些内部状态(比如方向)时,就会发出这个信号
    

QPrintPreviewDialog
  • 描述
    • 用于预览和配置打印机输出的页面布局的对话框
    • 可以用现有的QPrinter对象构造一个QPrintPreviewDialog
    • 也可以让QPrintPreviewDialog为您创建一个QPrintPreviewDialog,它将是系统默认的打印机
    • 将paintrerequested()信号连接到插槽。当对话框需要生成一组预览页面时,paintrerequested()信号将被发出
  • 继承自:QDialog
  • 常用API
    # 构造函数
    QPrintPreviewDialog()
    # 创建一个内部QPrinter对象,该对象将使用系统默认打印机
    QPrintPreviewDialog(QWidget *parent = nullptr, Qt.WindowFlags flags = Qt.WindowFlags())
    # 构造一个基于指定打印机的QPrintPreviewDialog对象,并以parent作为父部件
    QPrintPreviewDialog(QPrinter *printer, QWidget *parent = nullptr, Qt.WindowFlags flags = Qt.WindowFlags())
    
    done(int result)                                    # 关闭对话框并将其结果代码设置为result
        # 重写 QDialog.done(int r)
        # 如果使用exec()显示此对话框,done()也会导致本地事件循环结束,并且exec()返回result
    open(QObject *receiver, const char *member)         # 打开对话框并将其完成的(int)信号连接到由接收器和成员指定的插槽
    printer()                                           # 返回与QPrintPreviewDialog关联的QPrinter对象
    
    setVisible(bool visible)                            # 是否可见
    
  • 可用信号
    paintRequested(QPrinter *printer)           # 当生成一组预览页面时,就会发出这个信号
    # 所提供的打印机实例是绘制设备,您应该在其上绘制每个页面的内容,使用QPrinter实例的方式与直接打印时的方式相同
    

QPrintEngine
  • 描述
    • 用于预览和配置打印机输出的页面布局的对话框
    • QPrintEngine类定义了一个接口,用于QPrinter如何与给定的打印子系统交互
    • 在创建自己的打印引擎时,常见的情况是同时从QPaintEngine和QPrintEngine派生
    • 打印引擎的各种属性由property()给出,并由setProperty()设置。
  • 继承自:simplewrapper
  • 枚举
  • QPrintEngine.PrintEnginePropertyKey
    • 用于打印引擎和QPrinter之间的属性通信。给定的打印引擎可能支持也可能不支持某个属性
    QPrintEngine.PrintEnginePropertyKey
        # QPrintEngine.PPK_CollateCopies              # 0  一个布尔值,指示是否应该对打印输出进行排序
        # QPrintEngine.PPK_ColorMode                  # 1  指Qprinter.ColorMode,可以是彩色的,也可以是单色的
        # QPrintEngine.PPK_Creator                    # 2  描述文档创建者的字符串
        # QPrintEngine.PPK_Duplex                     # 20 一个布尔值,指示是否应将打印纸的两面用于打印输出
        # QPrintEngine.PPK_DocumentName               # 3  在假脱机程序中描述文档名称的字符串
        # QPrintEngine.PPK_FontEmbedding              # 19	一个布尔值,指示文档字体的数据是否应该嵌入到发送到打印机的数据中
        # QPrintEngine.PPK_FullPage                   # 4  一个布尔值,描述打印机是否应该满页
        # QPrintEngine.PPK_Orientation                # 6  指定Qprinter.Orientation值
        # QPrintEngine.PPK_OutputFileName             # 7  以字符串形式输出文件名。空文件名表示打印机不应该打印到某个文件
        # QPrintEngine.PPK_PageOrder                  # 8  指定Qprinter.PageOrder值
        # QPrintEngine.PPK_PageRect                   # 9  指定页面矩形的QRect
        # QPrintEngine.PPK_PaperRect                  # 11 指定纸张矩形的QRect
        # QPrintEngine.PPK_PaperSource                # 12 指定Qprinter.PaperSource值
        # QPrintEngine.PPK_PaperSources               # 21 指定多个QPrinter.PaperSource值
        # QPrintEngine.PPK_PaperName                  # 26 指定论文名称的字符串
        # QPrintEngine.PPK_PaperSize                  # PPK_PageSize	指定QPrinter.PaperSize值
        # QPrintEngine.PPK_PrinterName                # 13 指定打印机名称的字符串
        # QPrintEngine.PPK_PrinterProgram             # 14 指定用于打印的打印机程序名称的字符串
        # QPrintEngine.PPK_Resolution                 # 15 描述这台打印机每英寸网点数的整数
        # QPrintEngine.PPK_SelectionOption            # 16
        # QPrintEngine.PPK_SupportedResolutions       # 17 描述打印机支持的一组分辨率的整数QVariant列表
        # QPrintEngine.PPK_WindowsPageSize            # 18 在Windows上指定DM_PAPER条目的整数
        # QPrintEngine.PPK_CustomPaperSize            # 22 在QPrinter.Point单位中指定自定义纸张大小的QSizeF
        # QPrintEngine.PPK_PageMargins                # 23 一个QList<QVariant>,包含QPrinter.Point单元中的左、上、右和下边距值
        # QPrintEngine.PPK_CopyCount                  # 24 指定要打印的副本数量的整数
        # QPrintEngine.PPK_SupportsMultipleCopies     # 25 一个布尔值,指示打印机是否支持在一个作业中打印多个副本
        # QPrintEngine.PPK_QPageSize                  # 27 使用QPageSize对象设置页面大小
        # QPrintEngine.PPK_QPageMargins               # 28 使用QMarginsF和QPageLayout.Unit的QPair设置页边距
        # QPrintEngine.PPK_QPageLayout                # 29 使用QPageLayout对象设置页面布局
        # QPrintEngine.PPK_CustomBase                 # 0xff00	扩展的基础
    
  • 常用API
    QPrintEngine()          # 构造函数
    abort()                 # 指示打印引擎中止打印过程。如果成功返回true;否则返回false
    printerState()          # 返回打印引擎正在使用的打印机的当前状态
    newPage()               # 指示打印引擎开始一个新页面。如果打印机能够创建新页面,则返回true;否则返回false
    metric(QPaintDevice.PaintDeviceMetric id)       # 返回给定id的度量
    property(QPrintEngine.PrintEnginePropertyKey key)
    # 返回由键指定的打印引擎属性
    setProperty(QPrintEngine.PrintEnginePropertyKey key, const QVariant &value)
    # 将键指定的打印引擎属性设置为给定值
    

QPrinterInfo
  • 描述
    • 提供对现有打印机信息的访问
    • 使用静态函数生成QPrinterInfo对象列表。
    • 列表中的每个QPrinterInfo对象表示一台打印机,可以查询名称、支持的纸张大小以及它是否是默认打印机
  • 继承自:simplewrapper
  • 常用API
    QPrinterInfo()                              # 构造一个空的QPrinterInfo对象
    QPrinterInfo(const QPrinter &printer)       # 从printer构造一个QPrinterInfo对象
    QPrinterInfo(const QPrinterInfo &other)     # 构造other的副本
    
    QPrinterInfo.operator=(const QPrinterInfo &other)       # 设置QPrinterInfo对象等于other
    availablePrinterNames()                     # 返回此系统上所有可用打印机名称的列表
        # 建议使用此方法而不是availablePrinters(),因为它在大多数系统上会更快。
        # 请注意,如果在本地系统或远程打印服务器上进行了更改,该列表可能会过时
        # 只在需要时实例化所需的QPrinterInfo实例,并在调用之前始终检查有效性
    availablePrinters()                         # 返回系统中所有可用打印机的QPrinterInfo对象列表
        # 不建议使用此方法,因为创建每个打印机实例可能需要很长时间,特别是在存在远程联网打印机的情况下
        # 并且如果在本地系统或远程打印服务器上进行更改,保留的实例可能会过时
    defaultColorMode()                          # 返回此打印机的默认颜色模式
    defaultDuplexMode()                         # 返回此打印机的默认双工模式
    defaultPageSize()                           # 返回此打印机的当前默认页面大小
    defaultPrinter()                            # 返回系统上的默认打印机
        # 在使用返回值之前,应该使用isNull()检查返回值,以防没有默认打印机。
    defaultPrinterName()                        # 返回当前默认打印机名称
    description()                               # 返回打印机的可读描述
    isDefault()                                 # 返回此打印机当前是否为默认打印机
    isNull()                                    # 返回QPrinterInfo对象是否包含打印机定义。
        # 例如,当系统上没有打印机时,调用defaultPrinter()可能会产生一个空的QPrinterInfo对象
    isRemote()                                  # 返回此打印机是否为远程网络打印机
    location()                                  # 返回打印机的可读位置
    makeAndModel ()                             # 返回可读打印机的品牌和型号
    maximumPhysicalPageSize ()                  # 返回此打印机支持的最大物理页面大小
    minimumPhysicalPageSize()                   # 返回此打印机支持的最小物理页面大小
    printerInfo(const QString &printerName)     # 返回打印机prinintername
        # 在使用返回值之前应该使用isNull()进行检查,以防指定的打印机不存在
    printerName()                               # 返回打印机的名称
    state()                                     # 返回该打印机的当前状态
    supportedColorModes()                       # 返回此打印机支持的颜色模式
    supportedDuplexModes()                      # 返返回此打印机支持的双工模式列表
    supportedPageSizes()                        # 返回此打印机支持的页面大小列表
    supportedResolutions()                      # 返回此打印机支持的分辨率列表
    supportsCustomPageSizes()                   # 返回此打印机是否支持自定义页面大小
    
  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失心疯_2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值