PDA

View Full Version : problem with render widget to PDF



Valera Safin
27th September 2020, 00:00
Hello! I want to render a widget to a .pdf file, but I ran into a problem.


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.Hi ghResolution)
printer.setOutputFormat(QtPrintSupport.QPrinter.Pd fFormat)
printer.setOrientation(QtPrintSupport.QPrinter.Lan dscape)
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()

Why is the .pdf file drawn only when the coefficient is not more than 5? :(