i am creating a PDF file with pyqt5, i would like to know how i can decrease the right margin. For now my code formats the text to occupy the full line.
i wrote this loop to break the lines but the text gets badly formatted afterwards
painter.setFont(font_body)
description_txt = self.ui.txtDescription.toPlainText()
for pul in range(7):
self.cursor.insertBlock()
for text in [description_txt]:
for letter in range(len(text)):
if letter == 42 or letter == 84 or letter == 126 or letter == 168 or letter == 210 or letter == 252 or letter == 294 or letter == 336 or letter == 378 or letter == 420 or letter == 462 or letter == 504 or letter == 546 or letter == 588 or letter == 630:
self.cursor.insertText('\n')
self.cursor.insertText(text[letter])
self.cursor.insertText('\n')
This is my output
if I remove the loops, the text lines are on top of the images
EDIT: My printer, document and painter:
self.printer = QPrinter(QPrinter.PrinterMode.HighResolution)
self.printer.setOutputFormat(QPrinter.PdfFormat)
self.printer.setOutputFileName('relatorio.pdf')
painter = QtGui.QPainter()
painter.begin(self.printer)
self.document = QtGui.QTextDocument()
self.document.setDefaultFont(font_body)
self.document.setPageSize(QtCore.QSizeF(self.printer.width(),self.printer.height()))
self.cursor = QtGui.QTextCursor(self.document)
self.cursor.movePosition(QtGui.QTextCursor.End)
as my friend said in the comments of the post, a way to solve the text formatting is to remove this line break function and change the pagesize of "document". the page size code would look like this:
self.document.setPageSize(QtCore.QSizeF(5000, self.printer.height()))
Change the value of 5000 to the value that best suits your needs.
to change height value, change self.printer.height()
to some int value