x = (printerResolution / 2.54) * (tableWidth * 2.54) / self.DPI # widget width
y = (printerResolution / 2.54) * (tableHeight * 2.54) / self.DPI # widget height
printer.
setOutputFormat(QtPrintSupport.
QPrinter.
PdfFormat) printer.
setOrientation(QtPrintSupport.
QPrinter.
Landscape) printer.setOutputFileName(f"example.pdf")
printer.
setPageMargins(0,
0,
0,
0, QtPrintSupport.
QPrinter.
Millimeter) printer.setFullPage(True)
printer.
setPageSize(QtPrintSupport.
QPrinter.
A4)
painter.begin(printer)
rect = painter.viewport()
painter.setViewport(rect.x(), rect.y(), tableWidth, tableHeight)
painter.setWindow(rect.x(), rect.y(), tableWidth, tableHeight)
xscale = (printer.pageRect().width() / x) * 0.5 # when instead of 0.5 I insert a higher ratio (> 0.5) I get an empty .pdf file
yscale = (printer.pageRect().height() / y) * 0.5 # same
print("PAGERECT$", printer.pageRect())
scale = min(xscale, yscale)
painter.translate(printer.pageRect().topLeft())
painter.scale(scale, scale)
self.table.render(painter)
painter.end()
x = (printerResolution / 2.54) * (tableWidth * 2.54) / self.DPI # widget width
y = (printerResolution / 2.54) * (tableHeight * 2.54) / self.DPI # widget height
printer = QtPrintSupport.QPrinter(QtPrintSupport.QPrinter.HighResolution)
printer.setOutputFormat(QtPrintSupport.QPrinter.PdfFormat)
printer.setOrientation(QtPrintSupport.QPrinter.Landscape)
printer.setOutputFileName(f"example.pdf")
printer.setPageMargins(0, 0, 0, 0, QtPrintSupport.QPrinter.Millimeter)
printer.setFullPage(True)
printer.setPageSize(QtPrintSupport.QPrinter.A4)
painter = QPainter()
painter.begin(printer)
rect = painter.viewport()
painter.setViewport(rect.x(), rect.y(), tableWidth, tableHeight)
painter.setWindow(rect.x(), rect.y(), tableWidth, tableHeight)
xscale = (printer.pageRect().width() / x) * 0.5 # when instead of 0.5 I insert a higher ratio (> 0.5) I get an empty .pdf file
yscale = (printer.pageRect().height() / y) * 0.5 # same
print("PAGERECT$", printer.pageRect())
scale = min(xscale, yscale)
painter.translate(printer.pageRect().topLeft())
painter.scale(scale, scale)
self.table.render(painter)
painter.end()
To copy to clipboard, switch view to plain text mode
Bookmarks