Impression document PDF dans une application PySide 6

Bonjour,

Je suis en train de concevoir une application avec PySide 6, cette application génère un fichier pdf que je charge dans un QPdfDocument puis dans un QPdfView afin que l’utilisateur puisse le visualiser, je veux ensuite lui permettre de l’imprimer, mais je n’arrive pas à réaliser cette partie, c’est à dire celle de l’impression, j’ai essayé plusieurs solutions trouvées sur internet mais aucune ne marche, je suis juste arrivé à imprimer mais le fichier imprimé ne correspond pas à la taille ni la résolution voulue (A5). Je souhaiterais idéalement permettre une prévisualisation de la page à imprimer dans la boite de dialogue à imprimer.

Mise à jour (Ajout du code source pour aider):

        self.pdf_document=QPdfDocument()
        self.pdf_document.load("uploads/certificates/good_health_certificate.pdf")

        w=QWidget()
        main_layout=QVBoxLayout()
        w.setLayout(main_layout)
        self.pdf_view = QPdfView()
        #self.pdf_view.setPageMode(QPdfView.PageMode.MultiPage)
        self.pdf_view.setDocument(self.pdf_document)
        main_layout.addWidget(self.pdf_view)
        
        buttons_layout=QHBoxLayout()
        
        button=QPushButton("Zoom +")
        button.clicked.connect(self.set_zoom_plus)
        buttons_layout.addWidget(button)

        button=QPushButton("Zoom -")
        button.clicked.connect(self.set_zoom_moins)
        buttons_layout.addWidget(button)

        main_layout.addLayout(buttons_layout)

        button=QPushButton("Imprimer")
        button.clicked.connect(self.print_certificate)
        main_layout.addWidget(button)

        self.setCentralWidget(w)
        
        self.zoom_value=1

    def set_zoom_plus(self):
        self.zoom_value+=0.1
        self.pdf_view.setZoomFactor(self.zoom_value)

    def set_zoom_moins(self):
        self.zoom_value-=0.1
        self.pdf_view.setZoomFactor(self.zoom_value)
    
    
    def print_certificate(self):
        if self.pdf_document.status()!=QPdfDocument.Status.Ready:
            return
        printer=QPrinter()
        dialog=QPrintDialog(printer, self)

        if dialog.exec():
            painter=QPainter(printer)

            for page in range(self.pdf_document.pageCount()):
                image=self.pdf_document.render(page)
                rect=painter.viewport()
                image_scaled=image.scaled(rect.size(), aspectMode=1)
                painter.drawImage(rect.topLeft(), image)

                if page < self.pdf_document.pageCount()-1:
                    printer.newPage()
            painter.end()

Voici le code (ci-dessus) que j’ai obtenu en cherchant sur le net, mais ça ne fonctionne pas.

Merci par avance.