---
type: Quickstart
title: DocuMentor – Schnellstart
description: Einstiegspunkt in die Dokumentation. Überblick über DocuMentor, einer PySide6-Desktop-App für XSL-Transformationsverwaltung und PDF-Generierung.
tags: [xsl, pdf, pyside6, desktop-app, transformation]
---

# DocuMentor – Schnellstart

**DocuMentor** ist eine PySide6-basierte Desktop-Anwendung zur Verwaltung und Validierung von XSL-Transformationen mit automatischer PDF-Generierung. Sie richtet sich an Entwickler, die kontinuierlich XSL-Stylesheets pflegen und die Auswirkungen auf generierte PDF-Dokumente nachvollziehen müssen.

## Was ist DocuMentor?

Der primäre Einsatz ist die Weiterentwicklung von PDF-Dokumenten in **Flexnow** (Prüfungsverwaltungs-Software). Die Basis bilden ca. 100 XSL-Dateien, die über `<xsl:import/>` und `<xsl:include/>` miteinander verknüpft sind. Änderungen an einer XSL-Datei können sich auf viele andere auswirken. DocuMentor hilft, diese Auswirkungen durch automatisierte Transformation und PDF-Vergleich zu kontrollieren.

### Kern-Features

- **Hierarchische Projektverwaltung** – Baumstruktur für Transformations-Workflows mit verschachtelten Knoten
- **Asynchrone Batch-Verarbeitung** – Große Mengen von XML-Dateien im Hintergrund mit Fortschrittsanzeige
- **Parallele Worker-Pools** – Persistente JVM-Prozesse für Saxon (XSLT) und Apache FOP (PDF) eliminieren JVM-Startup-Overhead
- **Duplikatserkennung** – Hash-basierte (blake2b) Erkennung identischer XML-Dateien
- **PDF-Vergleichsansicht** – Drei-Panel-Ansicht (Referenz, Diff, Neu) mit Alpha-Blending und Zoom
- **PostgreSQL-Integration** – Datenbankanbindung mit Polars/ConnectorX
- **XSL-Abhängigkeitsgraph** – Visualisierung von `<xsl:import/>`- und `<xsl:include/>`-Beziehungen via vis.js
- **Plattformübergreifend** – Linux, Windows, macOS

## Installation

### Voraussetzungen

- Python 3.13+
- [uv](https://github.com/astral-sh/uv) Paketmanager
- OpenJDK/JRE (für Saxon und Apache FOP)

### Abhängigkeiten

```bash
uv sync
```

### Externe Tools

| Tool | Zweck | Download |
|------|-------|----------|
| **Saxon-HE** | XSLT 3.0 Prozessor | [saxonica.com](https://www.saxonica.com/download/) |
| **Apache FOP** | PDF-Generierung aus XSL-FO | [xmlgraphics.apache.org](https://xmlgraphics.apache.org/fop/download.html) |
| **diff-pdf** | PDF-Vergleich | [GitHub](https://github.com/vslavik/diff-pdf) |
| **OpenJDK** | JVM für Saxon/FOP Worker-Pools | [Eclipse Temurin](https://adoptium.net) |

## Anwendung starten

```bash
uv run python src/main.py
```

Beim ersten Start öffnet sich der Einstellungsdialog, in dem die externen Tools (Java VM, Saxon JAR, Apache FOP, diff-pdf, XSL-Verzeichnis, PostgreSQL) konfiguriert werden.

## Typischer Workflow

1. Entwickler ändert XSL-Dateien
2. Transformation in DocuMentor starten
3. PDF-Diff begutachten: Wurden die richtigen PDFs geändert?
4. Prüfen: Entspricht die Änderung der Erwartung?
5. Ggf. zurück zu Schritt 1

## Konfigurationsorte

| Plattform | Pfad |
|-----------|------|
| Linux | `~/.config/DocuMentor/config.json` |
| Windows | `%APPDATA%\DocuMentor\config.json` |
| macOS | `~/Library/Application Support/DocuMentor/config.json` |

Projektdaten werden pro Projekt in `project.yaml` gespeichert.

## Wiki-Struktur

- [Architektur-Überblick](architecture/overview.md) – PySide6-Mixin-Architektur, UI-Pattern, Thread-Modell, Konfigurationssystem
- [Transformations-Pipeline](workflows/transformation-pipeline.md) – XML→FO→PDF→Diff, Worker-Pools, XSL-Abhängigkeitsgraph, Entscheidungslogik
- [Datenmodelle & Konfiguration](data-models.md) – AppSettings, Project, ProjectData, TreeNode/XslFile/XmlFile, Hash-System, PostgreSQL
- [Build & Betrieb](operations.md) – Build-Prozess, MSI/ZIP-Distribution, Tests, Code-Style, Lizenzen

## Backlog

- **Web-Seite** (`web/`): Statische HTML-Landingpage mit Datenschutz/Impressum – nicht Teil der Anwendungslogik, bei Bedarf separat dokumentieren.
- **Skills** (`skills/`): Nur `write-connector` (OpenWiki-Skill), nicht projektspezifisch.
