diff --git a/src/MainWindow.py b/src/MainWindow.py index f608d5d..796a263 100644 --- a/src/MainWindow.py +++ b/src/MainWindow.py @@ -173,8 +173,8 @@ class MainWindow(QMainWindow): print(f" ref: {len(ref_doc)} Seiten") print(f" new: {len(new_doc)} Seiten") - # Nehme die minimale Seitenzahl aller drei PDFs - max_pages = min(len(diff_doc), len(ref_doc), len(new_doc)) + # Nehme die maximale Seitenzahl aller drei PDFs (diff_doc bestimmt die Anzahl) + max_pages = len(diff_doc) # Erstelle nur Thumbnails (keine Vollbilder) for page_num in range(max_pages): @@ -251,29 +251,49 @@ class MainWindow(QMainWindow): try: docs = self.pdf_documents[pdf_filename] - # Seiten aus allen drei PDFs laden + # Diff-Seite laden (bestimmt die Abmessungen) diff_page = docs['diff'][page_num] - ref_page = docs['ref'][page_num] - new_page = docs['new'][page_num] # Seiten in hoher Auflösung rendern matrix = pymupdf.Matrix(2.0, 2.0) # 2x Vergrößerung für bessere Qualität - # Alle drei Ebenen rendern + # Diff-Seite rendern (immer vorhanden) diff_pix = diff_page.get_pixmap(matrix=matrix) diff_img_data = diff_pix.tobytes("png") diff_qimg = QImage.fromData(diff_img_data) diff_pixmap = QPixmap.fromImage(diff_qimg) + + # Ermittle die Abmessungen der Diff-Seite für weiße Seiten + diff_width = diff_pixmap.width() + diff_height = diff_pixmap.height() - ref_pix = ref_page.get_pixmap(matrix=matrix) - ref_img_data = ref_pix.tobytes("png") - ref_qimg = QImage.fromData(ref_img_data) - ref_pixmap = QPixmap.fromImage(ref_qimg) + # Ref-Seite prüfen und rendern oder weiße Seite erstellen + if page_num < len(docs['ref']): + ref_page = docs['ref'][page_num] + ref_pix = ref_page.get_pixmap(matrix=matrix) + ref_img_data = ref_pix.tobytes("png") + ref_qimg = QImage.fromData(ref_img_data) + ref_pixmap = QPixmap.fromImage(ref_qimg) + print(f"Ref-Seite {page_num + 1} gerendert") + else: + # Erstelle weiße Seite mit gleichen Abmessungen wie Diff-Seite + ref_pixmap = QPixmap(diff_width, diff_height) + ref_pixmap.fill(Qt.GlobalColor.white) + print(f"Weiße Ref-Seite {page_num + 1} erstellt (Seite existiert nicht)") - new_pix = new_page.get_pixmap(matrix=matrix) - new_img_data = new_pix.tobytes("png") - new_qimg = QImage.fromData(new_img_data) - new_pixmap = QPixmap.fromImage(new_qimg) + # New-Seite prüfen und rendern oder weiße Seite erstellen + if page_num < len(docs['new']): + new_page = docs['new'][page_num] + new_pix = new_page.get_pixmap(matrix=matrix) + new_img_data = new_pix.tobytes("png") + new_qimg = QImage.fromData(new_img_data) + new_pixmap = QPixmap.fromImage(new_qimg) + print(f"New-Seite {page_num + 1} gerendert") + else: + # Erstelle weiße Seite mit gleichen Abmessungen wie Diff-Seite + new_pixmap = QPixmap(diff_width, diff_height) + new_pixmap.fill(Qt.GlobalColor.white) + print(f"Weiße New-Seite {page_num + 1} erstellt (Seite existiert nicht)") # Cache die gerenderten Pixmaps für schnelle Alpha/Zoom-Operationen self.current_rendered_pixmaps = {