PDF-Ordnerstruktur auf 'new', 'ref' und 'diff' umgestellt
Die PDF-Generierung verwendet nun die Ordner 'new', 'ref' und 'diff' anstelle von 'output', 'valide' und 'diff'. Dies ermöglicht die Integration mit MainWindow._load_images(), die PDFs in den Ordnern 'new', 'ref' und 'diff' sucht. Änderungen: - output_dir → new_dir (für neu generierte PDFs) - valide_dir → ref_dir (für Referenz-PDFs) - Alle Variablen und Log-Meldungen entsprechend angepasst - Unused import entfernt (typing.Optional) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
+29
-30
@@ -10,7 +10,6 @@ Dieses Modul implementiert die Transformations-Pipeline:
|
||||
import logging
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -65,13 +64,13 @@ class TransformationJob:
|
||||
self.diff_pdf_params = diff_pdf_params
|
||||
|
||||
# Ausgabe-Verzeichnisse im Projektordner
|
||||
self.output_dir = project_dir / "output"
|
||||
self.valide_dir = project_dir / "valide"
|
||||
self.new_dir = project_dir / "new"
|
||||
self.ref_dir = project_dir / "ref"
|
||||
self.diff_dir = project_dir / "diff"
|
||||
|
||||
# Stelle sicher, dass Ausgabe-Verzeichnisse existieren
|
||||
self.output_dir.mkdir(exist_ok=True)
|
||||
self.valide_dir.mkdir(exist_ok=True)
|
||||
self.new_dir.mkdir(exist_ok=True)
|
||||
self.ref_dir.mkdir(exist_ok=True)
|
||||
self.diff_dir.mkdir(exist_ok=True)
|
||||
|
||||
# Dateinamen basierend auf XML-Datei + XSL-ID
|
||||
@@ -85,9 +84,9 @@ class TransformationJob:
|
||||
else:
|
||||
file_name_base = base_name
|
||||
|
||||
self.temp_fo = self.output_dir / f"{file_name_base}.fo"
|
||||
self.output_pdf = self.output_dir / f"{file_name_base}.pdf"
|
||||
self.valide_pdf = self.valide_dir / f"{file_name_base}.pdf"
|
||||
self.temp_fo = self.new_dir / f"{file_name_base}.fo"
|
||||
self.new_pdf = self.new_dir / f"{file_name_base}.pdf"
|
||||
self.ref_pdf = self.ref_dir / f"{file_name_base}.pdf"
|
||||
self.diff_pdf = self.diff_dir / f"{file_name_base}.pdf"
|
||||
|
||||
# Apache FOP Binaries (plattformabhängig)
|
||||
@@ -104,13 +103,13 @@ class TransformationJob:
|
||||
Prüft, ob die Transformation aktuell ist.
|
||||
|
||||
Returns:
|
||||
bool: True wenn Output-PDF existiert und aktueller ist als alle Inputs
|
||||
bool: True wenn New-PDF existiert und aktueller ist als alle Inputs
|
||||
"""
|
||||
if not self.output_pdf.exists():
|
||||
logger.debug(f"Output-PDF existiert nicht: {self.output_pdf}")
|
||||
if not self.new_pdf.exists():
|
||||
logger.debug(f"New-PDF existiert nicht: {self.new_pdf}")
|
||||
return False
|
||||
|
||||
output_mtime = self.output_pdf.stat().st_mtime
|
||||
output_mtime = self.new_pdf.stat().st_mtime
|
||||
|
||||
# Prüfe XML-Datei
|
||||
xml_abs = self.project_dir / self.xml_file
|
||||
@@ -123,7 +122,7 @@ class TransformationJob:
|
||||
logger.debug(f"XSL-Datei ist neuer: {self.xsl_file}")
|
||||
return False
|
||||
|
||||
logger.debug(f"Transformation ist aktuell: {self.output_pdf}")
|
||||
logger.debug(f"Transformation ist aktuell: {self.new_pdf}")
|
||||
return True
|
||||
|
||||
def transform_saxon(self, force: bool = False) -> tuple[bool, str]:
|
||||
@@ -233,7 +232,7 @@ class TransformationJob:
|
||||
"-c", str(self.fop_conf) if self.fop_conf.exists() else "",
|
||||
"-r",
|
||||
"-fo", str(self.temp_fo),
|
||||
"-pdf", str(self.output_pdf),
|
||||
"-pdf", str(self.new_pdf),
|
||||
]
|
||||
|
||||
# Entferne leere Config-Parameter wenn fop.xconf nicht existiert
|
||||
@@ -260,16 +259,16 @@ class TransformationJob:
|
||||
logger.warning(f"Konnte FO-Datei nicht löschen: {e}")
|
||||
|
||||
if result.returncode == 0:
|
||||
# Wenn kein Valide-PDF existiert, erstelle es
|
||||
if not self.valide_pdf.exists():
|
||||
# Wenn kein Ref-PDF existiert, erstelle es
|
||||
if not self.ref_pdf.exists():
|
||||
try:
|
||||
import shutil
|
||||
shutil.copy2(self.output_pdf, self.valide_pdf)
|
||||
logger.info(f"Valide-PDF erstellt: {self.valide_pdf}")
|
||||
shutil.copy2(self.new_pdf, self.ref_pdf)
|
||||
logger.info(f"Ref-PDF erstellt: {self.ref_pdf}")
|
||||
except Exception as e:
|
||||
logger.warning(f"Konnte Valide-PDF nicht erstellen: {e}")
|
||||
logger.warning(f"Konnte Ref-PDF nicht erstellen: {e}")
|
||||
|
||||
logger.info(f"PDF-Generierung erfolgreich: {self.output_pdf}")
|
||||
logger.info(f"PDF-Generierung erfolgreich: {self.new_pdf}")
|
||||
return True, "Erfolgreich"
|
||||
else:
|
||||
error_msg = f"FOP-Fehler (Exit {result.returncode}):\nStdOut: {result.stdout}\nStdErr: {result.stderr}"
|
||||
@@ -287,19 +286,19 @@ class TransformationJob:
|
||||
|
||||
def compare_pdf(self) -> tuple[bool, str]:
|
||||
"""
|
||||
Vergleicht Output-PDF mit Valide-PDF und erstellt ggf. Diff-PDF.
|
||||
Vergleicht New-PDF mit Ref-PDF und erstellt ggf. Diff-PDF.
|
||||
|
||||
Returns:
|
||||
tuple[bool, str]: (PDFs sind identisch, Fehlermeldung/Info)
|
||||
"""
|
||||
# Prüfe ob beide PDFs existieren
|
||||
if not self.valide_pdf.exists():
|
||||
info_msg = "Kein Valide-PDF vorhanden (wird beim nächsten Build erstellt)"
|
||||
if not self.ref_pdf.exists():
|
||||
info_msg = "Kein Ref-PDF vorhanden (wird beim nächsten Build erstellt)"
|
||||
logger.info(info_msg)
|
||||
return True, info_msg
|
||||
|
||||
if not self.output_pdf.exists():
|
||||
error_msg = f"Output-PDF nicht gefunden: {self.output_pdf}"
|
||||
if not self.new_pdf.exists():
|
||||
error_msg = f"New-PDF nicht gefunden: {self.new_pdf}"
|
||||
logger.error(error_msg)
|
||||
return False, error_msg
|
||||
|
||||
@@ -309,8 +308,8 @@ class TransformationJob:
|
||||
cmd_compare = [
|
||||
str(self.diff_pdf_path),
|
||||
*self.diff_pdf_params,
|
||||
str(self.valide_pdf),
|
||||
str(self.output_pdf),
|
||||
str(self.ref_pdf),
|
||||
str(self.new_pdf),
|
||||
]
|
||||
|
||||
logger.debug(f"Kommandozeile Vergleich: {' '.join(cmd_compare)}")
|
||||
@@ -345,8 +344,8 @@ class TransformationJob:
|
||||
f"--output-diff={self.diff_pdf}",
|
||||
*self.diff_pdf_params,
|
||||
"--mark-differences",
|
||||
str(self.valide_pdf),
|
||||
str(self.output_pdf),
|
||||
str(self.ref_pdf),
|
||||
str(self.new_pdf),
|
||||
]
|
||||
|
||||
logger.debug(f"Kommandozeile Diff: {' '.join(cmd_diff)}")
|
||||
@@ -394,7 +393,7 @@ class TransformationJob:
|
||||
"xml_file": str(self.xml_file),
|
||||
"steps": {},
|
||||
"duration": None,
|
||||
"output_pdf": str(self.output_pdf) if self.output_pdf.exists() else None,
|
||||
"new_pdf": str(self.new_pdf) if self.new_pdf.exists() else None,
|
||||
"diff_pdf": str(self.diff_pdf) if self.diff_pdf.exists() else None,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user