- class QPrinter#
QPrinter
类是一个打印设备,它将页面内容打印到打印机。更多...概要#
方法#
def
__init__()
def
abort()
def
collateCopies()
def
colorMode()
def
copyCount()
def
creator()
定义
docName()
定义
duplex()
定义
fromPage()
定义
fullPage()
定义
isValid()
定义
pageOrder()
定义
pageRect()
定义
paperRect()
定义
pdfVersion()
定义
printRange()
定义
resolution()
定义
setCreator()
定义
setDocName()
定义
setDuplex()
定义
setEngines()
定义
setFromTo()
定义
toPage()
注意
此文档可能包含自动从C++转换为Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有误,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细说明#
此设备代表一系列打印输出页,其使用方式几乎与其他绘图设备(如QWidget和QPixmap)完全相同。提供了一组额外的函数来管理特定于设备的特征,例如方向和分辨率,并可在生成文档时逐步遍历页面。
当在Windows或macOS中将直接打印到打印机时,
QPrinter
会使用内置的打印机驱动程序。在X11上,QPrinter
会使用通用Unix打印系统(CUPS)将PDF输出发送到打印机。作为替代,可以使用printProgram()
函数来指定用于替代系统默认的命令或工具。请注意,在无效的打印机上设置纸张大小和分辨率等参数的行为是未定义的。您可以在更改任何参数之前使用
isValid()
验证。QPrinter
支持许多参数,其中大多数可以通过print dialog
让最终用户进行更改。通常,QPrinter
会将这些功能传递给底层的QPrintEngine
。最重要的参数包括
许多这些功能只能在实际打印开始之前调用(即在调用 QPainter::begin() 之前)。这通常是有意义的,因为例如,在打印中途无法更改副本数量。还有一些用户设置的设置(通过打印机对话框),应用程序应遵守。有关更详细的信息,请参阅
QAbstractPrintDialog
的文档。当调用 QPainter::begin() 时,它会为操作
QPrinter
的新页面做好准备,使 QPainter 能够立即用于绘制文档的第一页。一旦绘制了第一页,就可以调用newPage()
来请求一个新的空白页面进行绘制,或调用 QPainter::end() 来完成打印。在绘制第二页和后续所有页面之前,都会通过调用newPage()
来进行准备。文档中的第一页不需要在调用
newPage()
之前。只有在您需要在打印文档的起始处插入空白页时,才需要在 QPainter::begin() 之后调用newPage()
。同样,在绘制文档的最后一页之后调用newPage()
会导致在打印文档的末尾添加一个后续的空白页。如果您想终止打印作业,
abort()
将尽力停止打印。它可能会取消整个作业或只是部分作业。由于
QPrinter
可以打印到任何QPrintEngine
子类,因此可以通过继承QPrintEngine
并重新实现其接口来扩展打印支持,以便涵盖新的打印子系统类型。另请参阅
QPrintDialog
Qt 打印支持- class PrinterMode#
此枚举描述了打印机应工作的模式。它基本上预设了一个特定的分辨率和工作模式。
常量
描述
QPrinter.ScreenResolution
将打印设备的分辨率设置为屏幕分辨率。这有一个很大的优点,即当在打印机上绘画时,得到的结果将与屏幕上的可见输出大致匹配。它是使用最简单的,因为屏幕和打印机上的字体度量是相同的。这是默认值。ScreenResolution 将生成低于 HighResolution 的输出质量,应仅用于草稿。
QPrinter.PrinterResolution
此属性已弃用。它在Unix上相当于ScreenResolution,在Windows和Mac上相当于HighResolution。由于ScreenResolution和HighResolution的区别,使用此值可能导致无法迁移的打印机代码。
QPrinter.HighResolution
在Windows上,将打印机分辨率设置为正在使用的打印机的定义分辨率。对于PDF打印,将PDF驱动程序的分辨率设置为1200 dpi。
注意
在
QPrinter
设备上渲染文本时,重要的是要认识到,当文本大小以点为单位指定时,其大小与设备本身指定的分辨率无关。因此,当将文本与图形结合使用时,指定字体大小为像素可能很有用,以确保它们的相对大小符合预期。
- class PageOrder#
此枚举类型由
QPrinter
用于告诉应用程序如何打印。常量
描述
QPrinter.FirstPageFirst
应首先打印编号最低的页面。
QPrinter.LastPageFirst
应首先打印编号最高的页面。
- class ColorMode#
此枚举类型用来表示
QPrinter
是否应打印彩色或灰度。常量
描述
QPrinter.Color
如果可用则打印彩色,否则打印灰度。
QPrinter.GrayScale
即使是彩色打印机,也以灰度打印。
- class PaperSource#
此枚举类型指定
QPrinter
应使用的纸张来源。QPrinter
不会检查纸张来源是否可用;它只是使用这些信息来尝试设置纸张来源。它是否会设置纸张来源取决于打印机是否有该特定来源。警告
目前此功能仅支持Windows。
常量
描述
QPrinter.Auto
QPrinter.Cassette
QPrinter.Envelope
QPrinter.EnvelopeManual
QPrinter.FormSource
QPrinter.LargeCapacity
QPrinter.LargeFormat
QPrinter.Lower
QPrinter.MaxPageSource
已弃用,请改用LastPaperSource。
QPrinter.Middle
QPrinter.Manual
QPrinter.OnlyOne
QPrinter.Tractor
QPrinter.SmallFormat
QPrinter.Upper
QPrinter.CustomSource
Qt不认识的打印机定义的PaperSource。
QPrinter.LastPaperSource
当前最高的有效PaperSource值,目前是CustomSource。
- class PrinterState#
常量
描述
QPrinter.Idle
QPrinter.Active
QPrinter.Aborted
QPrinter.Error
- class PrintRange#
用于指定打印范围选择选项。
常量
描述
QPrinter.AllPages
应该打印所有页面。
QPrinter.Selection
只打印选中内容。
QPrinter.PageRange
应打印指定的页面范围。
QPrinter.CurrentPage
只打印当前页面。
- class Unit#
该枚举类型用于指定页大小和纸张大小的测量单位。
常量
描述
QPrinter.Millimeter
QPrinter.Point
QPrinter.Inch
QPrinter.Pica
QPrinter.Didot
QPrinter.Cicero
QPrinter.DevicePixel
注意 Point 和 DevicePixel 之间的区别。Point 单位被定义为 1/72 英寸,而 DevicePixel 单位是分辨率相关的,并且基于打印机上的实际像素或点。
- class DuplexMode#
该枚举用于指示打印是否会在每张纸的单面或双面上进行(单面或双面打印)。
常量
描述
QPrinter.DuplexNone
仅单面(单面打印)。
QPrinter.DuplexAuto
根据打印机的默认设置来决定是否使用双面打印。
QPrinter.DuplexLongSide
每张纸的两面都用于打印。在打印第二面之前,纸张会翻转到最长边缘。
QPrinter.DuplexShortSide
每张纸的两面都用于打印。在打印第二面之前,纸张会翻转到最短边缘。
- __init__(printer[, mode=QPrinter.PrinterMode.ScreenResolution])#
- 参数:
printer –
QPrinterInfo
mode –
PrinterMode
创建一个新的带给定
printer
和mode
的打印机对象。- __init__([mode=QPrinter.PrinterMode.ScreenResolution])
- 参数:
mode –
PrinterMode
创建一个新的带给定
mode
的打印机对象。- abort()#
- 返回类型:
bool
终止当前打印任务。如果成功终止并返回
true
,则printerState()
将返回Aborted
;否则返回false
。并非总能终止打印任务。例如,所有数据都已发送至打印机,但打印机无法或不会在请求时取消任务。
- collateCopies()#
- 返回类型:
bool
当选择多份副本时,如果已开启合并副本功能,则返回
true
;如果关闭,则返回false
。当合并副本功能关闭时,将根据 numCopies() 值重复打印每一页,然后开始打印下一页。当开启合并副本功能时,在开始下一份副本之前,所有页面都已被打印。另请参阅
返回当前颜色模式。
另请参阅
- copyCount()#
- 返回类型:
int
返回将被打印的副本数量。默认值为 1。
- creator()#
- 返回类型:
str
返回创建文档的应用程序的名称。
另请参阅
- docName()#
- 返回类型:
str
返回文档名称。
返回当前双面打印模式。
另请参阅
- fontEmbeddingEnabled()#
- 返回类型:
bool
如果启用字体嵌入,则返回
true
。- fromPage()#
- 返回类型:
int
返回要打印的页面范围的起始页面号(“起始页面”设置)。文档中的页面根据约定编号,第一页为第1页。
默认情况下,此函数返回特殊值0,表示未设置“起始页面”。
- fullPage()#
- 返回类型:
bool
如果打印器的坐标系统原点位于页面角,则返回
true
,如果位于可打印区域的边缘则为false。有关详细信息和使用注意事项,请参阅
setFullPage()
。- isValid()#
- 返回类型:
bool
警告
本节包含自动从C++转换为Python的代码片段,可能包含错误。
如果当前选定的打印机系统中的有效打印机或纯PDF打印机,则返回
true
;否则返回false
。要检测其他失败情况,请检查QPainter::begin()或
newPage()
的输出。printer = QPrinter() printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName("/foobar/nonwritable.pdf") painter = QPainter() if not painter.begin(printer): # failed to open file qWarning("failed to open file, is it writable?") return 1 painter.drawText(10, 10, "Test") if not printer.newPage(): qWarning("failed in flushing page to disk, disk full?") return 1 painter.drawText(10, 10, "Test 2") painter.end()
另请参阅
- outputFileName()#
- 返回类型:
str
返回输出文件的名称。默认情况下,这是一个空字符串(表示打印机不应将内容打印到文件)。
- outputFormat()#
- 返回类型:
返回该打印机的输出格式。
另请参阅
返回当前页面顺序。
默认页面顺序为
FirstPageFirst
。另请参阅
以
unit
返回页面的矩形;这通常小于paperRect()
,因为页面通常在边界和纸张之间存在页边距。另请参阅
以
unit
返回纸张的矩形;这通常大于pageRect()
.另请参阅
- paperSource()#
- 返回类型:
返回打印机的纸张来源。这是
Manual
或者打印机纸盒或纸盒。另请参阅
- pdfVersion()#
- 返回类型:
返回该打印机的 PDF 版本。默认值为
PdfVersion_1_4
。另请参阅
- printEngine()#
- 返回类型:
返回打印机使用的打印引擎。
- printProgram()#
- 返回类型:
str
返回将打印输出发送到打印机的程序名称。
默认返回空字符串;这意味着
QPrinter
将以一种系统相关的方式尝试智能处理。仅限X11平台,您可以设置为不同的值来使用特定的打印程序。在其他平台上,此设置返回空字符串。另请参阅
setPrintProgram()
setPrinterSelectionOption()
返回
QPrinter
的页面范围。在打开打印设置对话框后,此函数返回用户选择的值。另请参阅
- printerName()#
- 返回类型:
str
返回打印机名称。此值最初设置为默认打印机的名称。
另请参阅
返回打印机的当前状态。这可能有误(例如,如果打印机无法将状态报告给操作系统)。
- resolution()#
- 返回类型:
int
返回打印机当前假设的分辨率,由
setResolution()
或打印机驱动程序设置。另请参阅
- setCollateCopies(collate)#
- 参数:
collate – bool
设置打印对话框出现时折叠框的默认值。如果
collate
为 true,将启用 setCollateCopiesEnabled()。默认值为 false。此值将由用户在打印对话框中按下的键来更改。另请参阅
将打印机的颜色模式设置为
newColorMode
,可以是Color
或GrayScale
。另请参阅
- setCopyCount(arg__1)#
- 参数:
arg__1 – int
将打印机的复制数量设置为
count
。打印机驱动程序读取此设置并打印指定数量的副本。
- setCreator(arg__1)#
- 参数:
arg__1 – str
设置创建文档的应用程序名称为
creator
。此功能仅适用于 Qt 的 X11 版本。如果没有指定创建者名称,则创建者将被设置为“Qt”后跟一些版本号。
另请参阅
- setDocName(arg__1)#
- 参数:
arg__1 – str
将文档名称设置为
name
。在 X11 中,文档名称例如在
QPrintDialog
中用作默认输出文件名。请注意,如果打印机打印到文件,则文档名称不会影响文件名。为此请使用 setOutputFile() 函数。- setDuplex(duplex)#
- 参数:
duplex –
DuplexMode
根据
duplex
模式启用双面打印。另请参阅
- setEngines(printEngine, paintEngine)#
- 参数:
printEngine –
QPrintEngine
paintEngine –
QPaintEngine
此函数由
QPrinter
的子类用于指定自定义打印和绘图引擎(分别对应printEngine
和paintEngine
)。QPrinter
不拥有这些引擎的所有权,因此您需要自己管理这些引擎实例。请注意,更改引擎将重置打印机状态及其所有属性。
另请参阅
printEngine()
paintEngine()
setOutputFormat()
- setFontEmbeddingEnabled(enable)#
- 参数:
enable – 布尔类型
根据
enable
启用或禁用字体嵌入。- setFromTo(fromPage, toPage)#
- 参数:
fromPage – 整数
toPage – 整数
设置要打印的页面范围,以包括由
from
和to
指定的页面号,其中from
对应于范围内的第一页,而to
对应于最后一页。注意
文档中的页面按惯例编号,即第一页为第 1 页。但是,如果将
from
和to
均设置为 0,则将打印 整个文档。此函数主要用于在调用 setup() 时设置一个默认值,用户可以在打印对话框中覆盖。
- setFullPage(arg__1)#
- 参数:
arg__1 – 布尔类型
如果
fp
为真,则启用对整个页面的绘画支持;否则将绘画限制为由设备报告的可打印区域。默认情况下,全页打印被禁用。在这种情况下,
QPrinter
坐标系的起点与可打印区域左上角重合。如果启用全页打印,
QPrinter
坐标系的起点将与纸张本身的左上角重合。在这种情况下,设备度量将报告与 {QPageSize} 指示的完全相同的维度。由于打印机的边距,可能无法在物理页面的整个区域上打印,因此应用程序必须自行考虑边距。另请参阅
fullPage()
setPageSize()
- setOutputFileName(arg__1)#
- 参数:
arg__1 – str
设置输出文件的名称为
fileName
。设置空或空字符串(0 或 “”)将禁用打印到文件。设置非空字符串将启用打印到文件。
这可能会更改
outputFormat()
的值。如果文件名有 “.pdf” 后缀,则生成 PDF。如果文件名有除 “.pdf” 以外的后缀,则使用的输出格式是使用setOutputFormat()
设置的格式。QPrinter
分别使用 Qt 的跨平台 PDF 打印引擎。如果您可以原生生成此格式,例如 macOS 可以从其打印引擎生成 PDF,则将输出格式设置为NativeFormat
。- setOutputFormat(format)#
- 参数:
format –
OutputFormat
设置该打印机的输出格式为
format
。如果
format
是当前设置的相同值,则不会进行任何更改。如果
format
是NativeFormat
,则printerName
将设置为默认打印机。如果没有配置有效的打印机,则不会进行任何更改。如果您想使用特定的printerName
将NativeFormat
设置,则请使用setPrinterName()
。设置页面顺序为
pageOrder
。页面顺序可以是
FirstPageFirst
或LastPageFirst
。应用程序负责读取页面顺序并相应地打印。该函数主要用于设置用户可以在打印对话框中覆盖的默认值。
此功能仅在X11下受支持。
另请参阅
- setPaperSource(arg__1)#
- 参数:
arg__1 –
PaperSource
将纸张来源设置设置为
source
。仅在Windows:此选项可以在打印时更改,并将在下次调用
newPage()
时生效。另请参阅
- setPdfVersion(version)#
- 参数:
version –
PdfVersion
将此打印机的PDF版本设置为
version
。如果
version
与当前设置的值相同,则不会进行更改。另请参阅
- setPrintProgram(arg__1)#
- 参数:
arg__1 – str
将执行打印作业的程序名称设置为
printProg
。在X11上,此函数将程序设置为调用PDF输出。在其他平台上,它没有作用。
另请参阅
- setPrintRange(range)#
- 参数:
range –
PrintRange
将打印范围选项设置为
range
。另请参阅
- setPrinterName(arg__1)#
- 参数:
arg__1 – str
将打印机名称设置为
name
。如果
name
为空,那么输出格式将设置为PdfFormat
。如果
name
不是一个有效的打印机,则不会进行任何更改。如果
name
是一个有效的打印机,则输出格式将设置为NativeFormat
。- setResolution(arg__1)#
- 参数:
arg__1 – int
请求打印机以
dpi
或尽可能接近dpi
的数值打印。此设置影响由 QPainter::viewport() 等返回的坐标系。
必须在 QPainter::begin() 调用之前调用此函数,以便在所有平台上产生影响。
- supportedResolutions()#
- 返回类型:
int 列表
返回打印机声明支持的分辨率(点/英寸整数列表)。
在 X11 中,所有打印都直接输出到 PDF,此函数将始终返回只包含 PDF 分辨率的一个元素列表,即 72(72 dpi – 但请参阅
PrinterMode
)。- supportsMultipleCopies()#
- 返回类型:
bool
如果打印机支持在一个作业中打印同一文档的多份副本,则返回
true
;否则返回 false。在大多数系统中,此函数将返回 true。然而,在不支持 CUPS 的 X11 系统上,此函数将返回 false. 这意味着应用程序必须通过多次打印同一文档来处理所需数量的副本。
- toPage()#
- 返回类型:
int
返回要打印的页面范围内的最后一页编号(“到页”设置)。文档中的页面根据惯例编号,即第一页是第 1 页。
默认情况下,此函数返回特殊值0,表示“转到页面”设置未设置。
注意
如果
fromPage()
和toPage()
都返回0,这意味着将打印“整个文档”。程序员负责读取此设置并相应地打印。