Ein PDF wird angezeigt.
This commit is contained in:
+49
-31
@@ -1,8 +1,9 @@
|
||||
import glob
|
||||
import os
|
||||
|
||||
import pymupdf # PyMuPDF
|
||||
from PySide6.QtCore import Qt
|
||||
from PySide6.QtGui import QCursor, QPixmap
|
||||
from PySide6.QtGui import QCursor, QPixmap, QImage
|
||||
from PySide6.QtWidgets import QLabel, QMainWindow
|
||||
|
||||
from ui.MainWinddow_ui import Ui_MainWindow
|
||||
@@ -38,7 +39,7 @@ class MainWindow(QMainWindow):
|
||||
self._connect_signals()
|
||||
|
||||
def _load_images(self):
|
||||
"""Lädt alle GIF-Dateien aus dem Ressourcen-Verzeichnis."""
|
||||
"""Lädt PDF-Seiten aus der Ntbackup.pdf-Datei."""
|
||||
# Entferne bestehende Widgets aus den Layouts
|
||||
self._clear_layout(self.ui.verticalLayout_2)
|
||||
self._clear_layout(self.ui.verticalLayout_3)
|
||||
@@ -47,44 +48,61 @@ class MainWindow(QMainWindow):
|
||||
self.thumbnail_to_full_image = {}
|
||||
self.original_pixmaps = {}
|
||||
|
||||
# Pfad zum Ressourcen-Ordner
|
||||
# Pfad zur PDF-Datei
|
||||
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
res_dir = os.path.join(base_dir, "src", "ui", "res")
|
||||
pdf_path = os.path.join(base_dir, "src", "ui", "res", "pdf", "Ntbackup.pdf")
|
||||
|
||||
# Alle GIF-Dateien finden
|
||||
gif_files = glob.glob(os.path.join(res_dir, "*.gif"))
|
||||
gif_files.sort() # Dateien alphabetisch sortieren
|
||||
if not os.path.exists(pdf_path):
|
||||
print(f"PDF-Datei nicht gefunden: {pdf_path}")
|
||||
return
|
||||
|
||||
print(f"Gefundene GIF-Dateien: {gif_files}")
|
||||
try:
|
||||
# PDF-Datei öffnen
|
||||
pdf_document = pymupdf.open(pdf_path)
|
||||
print(f"PDF geladen: {pdf_path} mit {len(pdf_document)} Seiten")
|
||||
|
||||
# Für jede GIF-Datei:
|
||||
for gif_file in gif_files:
|
||||
filename = os.path.basename(gif_file)
|
||||
# Für jede Seite der PDF:
|
||||
for page_num in range(len(pdf_document)):
|
||||
page = pdf_document[page_num]
|
||||
|
||||
# Seite in hoher Auflösung rendern
|
||||
matrix = pymupdf.Matrix(2.0, 2.0) # 2x Vergrößerung für bessere Qualität
|
||||
pix = page.get_pixmap(matrix=matrix)
|
||||
|
||||
# PyMuPDF Pixmap zu QImage konvertieren
|
||||
img_data = pix.tobytes("png")
|
||||
qimg = QImage.fromData(img_data)
|
||||
|
||||
# QImage zu QPixmap konvertieren
|
||||
original_pixmap = QPixmap.fromImage(qimg)
|
||||
|
||||
# Original-Pixmap laden und speichern
|
||||
original_pixmap = QPixmap(gif_file)
|
||||
# Thumbnail erstellen und zur linken Spalte hinzufügen
|
||||
thumbnail = QLabel()
|
||||
thumbnail.setObjectName(f"thumbnail_page_{page_num + 1}")
|
||||
thumbnail.setPixmap(original_pixmap.scaledToWidth(200, Qt.TransformationMode.SmoothTransformation))
|
||||
thumbnail.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
|
||||
thumbnail.setMouseTracking(True)
|
||||
self.ui.verticalLayout_2.addWidget(thumbnail)
|
||||
|
||||
# Thumbnail erstellen und zur linken Spalte hinzufügen
|
||||
thumbnail = QLabel()
|
||||
thumbnail.setObjectName(f"thumbnail_{filename}")
|
||||
thumbnail.setPixmap(original_pixmap.scaledToWidth(200))
|
||||
thumbnail.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
|
||||
thumbnail.setMouseTracking(True)
|
||||
self.ui.verticalLayout_2.addWidget(thumbnail)
|
||||
# Vollbild-Version erstellen und zur rechten Spalte hinzufügen
|
||||
fullsize = QLabel()
|
||||
fullsize.setObjectName(f"fullsize_page_{page_num + 1}")
|
||||
fullsize.setPixmap(original_pixmap)
|
||||
fullsize.setAlignment(Qt.AlignmentFlag.AlignHCenter) # Horizontale Zentrierung
|
||||
self.ui.verticalLayout_3.addWidget(fullsize)
|
||||
|
||||
# Vollbild-Version erstellen und zur rechten Spalte hinzufügen
|
||||
fullsize = QLabel()
|
||||
fullsize.setObjectName(f"fullsize_{filename}")
|
||||
fullsize.setPixmap(original_pixmap)
|
||||
fullsize.setAlignment(Qt.AlignmentFlag.AlignHCenter) # Horizontale Zentrierung
|
||||
self.ui.verticalLayout_3.addWidget(fullsize)
|
||||
# Beziehungen speichern
|
||||
self.thumbnail_to_full_image[thumbnail] = fullsize
|
||||
self.original_pixmaps[fullsize] = original_pixmap
|
||||
|
||||
# Beziehungen speichern
|
||||
self.thumbnail_to_full_image[thumbnail] = fullsize
|
||||
self.original_pixmaps[fullsize] = original_pixmap
|
||||
# Click-Event für das Thumbnail einrichten
|
||||
thumbnail.mousePressEvent = lambda event, t=thumbnail: self.on_thumbnail_clicked(event, t)
|
||||
|
||||
# Click-Event für das Thumbnail einrichten
|
||||
thumbnail.mousePressEvent = lambda event, t=thumbnail: self.on_thumbnail_clicked(event, t)
|
||||
# PDF-Dokument schließen
|
||||
pdf_document.close()
|
||||
|
||||
except Exception as e:
|
||||
print(f"Fehler beim Laden der PDF: {e}")
|
||||
|
||||
def _clear_layout(self, layout):
|
||||
"""Entfernt alle Widgets aus einem Layout."""
|
||||
|
||||
Reference in New Issue
Block a user