From ee6ded95ab652af70e883d0484a1c7e25952f2b4 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Fri, 12 Dec 2025 21:24:54 +0100 Subject: [PATCH] =?UTF-8?q?PDF-Dateinamen=20enthalten=20nun=20XSL-ID=20zur?= =?UTF-8?q?=20Vermeidung=20von=20=C3=9Cberschreibungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wenn eine XML-Datei mehreren XSL-Dateien zugeordnet ist, wurden die generierten PDFs bisher überschrieben. Jetzt wird die XSL-ID in den Dateinamen integriert (z.B. rechnung_xsl_1.pdf, rechnung_xsl_2.pdf), sodass jede Transformation ihre eigene PDF-Datei erhält. Änderungen: - TransformationJob: xsl_id Parameter hinzugefügt - Dateinamen-Generierung berücksichtigt XSL-ID (Tuple → String) - MainWindow: XSL-ID wird an TransformationJob übergeben 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- src/transform.py | 24 ++++++++++++++++++------ src/ui/MainWindow.py | 3 ++- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/transform.py b/src/transform.py index 6b654ba..e60b2c6 100644 --- a/src/transform.py +++ b/src/transform.py @@ -33,7 +33,8 @@ class TransformationJob: saxon_jar_path: Path, apache_fop_dir: Path, diff_pdf_path: Path, - diff_pdf_params: list[str] + diff_pdf_params: list[str], + xsl_id: tuple = None ): """ Initialisiert einen Transformations-Job. @@ -48,11 +49,13 @@ class TransformationJob: apache_fop_dir: Pfad zum Apache FOP-Verzeichnis diff_pdf_path: Pfad zur diff-pdf Binary diff_pdf_params: Standard-Parameter für diff-pdf + xsl_id: ID der XSL-Datei (als Tuple) """ self.project_dir = project_dir self.xml_file = xml_file # Relativ self.xsl_file = xsl_file # Absolut self.xslt_params = xslt_params + self.xsl_id = xsl_id # Tool-Pfade self.java_vm_path = java_vm_path @@ -71,12 +74,21 @@ class TransformationJob: self.valide_dir.mkdir(exist_ok=True) self.diff_dir.mkdir(exist_ok=True) - # Dateinamen basierend auf XML-Datei + # Dateinamen basierend auf XML-Datei + XSL-ID base_name = self.xml_file.stem - self.temp_fo = self.output_dir / f"{base_name}.fo" - self.output_pdf = self.output_dir / f"{base_name}.pdf" - self.valide_pdf = self.valide_dir / f"{base_name}.pdf" - self.diff_pdf = self.diff_dir / f"{base_name}.pdf" + + # Füge XSL-ID zum Dateinamen hinzu, falls vorhanden + if xsl_id: + # Konvertiere Tuple (1, 2, 3) zu String "1_2_3" + xsl_id_str = "_".join(str(x) for x in xsl_id) + file_name_base = f"{base_name}_xsl_{xsl_id_str}" + 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.diff_pdf = self.diff_dir / f"{file_name_base}.pdf" # Apache FOP Binaries (plattformabhängig) import sys diff --git a/src/ui/MainWindow.py b/src/ui/MainWindow.py index ab21d83..cec9fe9 100644 --- a/src/ui/MainWindow.py +++ b/src/ui/MainWindow.py @@ -2839,7 +2839,8 @@ class MainWindow(QMainWindow): saxon_jar_path=saxon_jar.path_to_jar_file, apache_fop_dir=apache_fop.path_to_dir, diff_pdf_path=diff_pdf.path_to_binary_file, - diff_pdf_params=diff_pdf.default_params + diff_pdf_params=diff_pdf.default_params, + xsl_id=xsl_file_obj.id ) return job