QPrinter
使用不同类型的
units of measure
:
Constant Value
QPrinter.Millimeter 0
QPrinter.Point 1
QPrinter.Inch 2
QPrinter.Pica 3
QPrinter.Didot 4
QPrinter.Cicero 5
QPrinter.DevicePixel 6
当你通过
paperSize()
你要求的方法
QPrinter.Point
QPainter
使用像素坐标,即,
QPrinter.DevicePixel
因此,获得的宽度不同于以像素为单位的宽度,为了解决这一问题,如果我们只改变测量单位的类型,如下所示:
app = QApplication(sys.argv)
printer = QPrinter()
painter = QPainter()
printer.setOutputFileName("prueba.pdf")
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setPageMargins(0.0, 0.0, 0.0, 0.0, QPrinter.Point)
printer.setFullPage(True)
margin = printer.getPageMargins(QPrinter.Point)
print(margin)
size = printer.paperSize(QPrinter.DevicePixel)
width = size.width()
print(width)
painter.begin(printer)
painter.drawText(QRectF(0.0,0.0,width,50.0), Qt.AlignCenter|Qt.AlignTop, "abcdefghijklmn")
painter.end()