1a0a56a626
Replace the stale multi-module java/mss-failsafe skeleton (old user-management prototype) with the active single-module machine-safety inspection app that was living in its own standalone repo at the repo root. - Remove old java/mss-failsafe/ multi-module tree (mss, userdata, userManagement, mssfailsafe.datalayer, mssfailsafeWeblayer) incl. committed build artifacts - Add the active app (PrimeFaces 11 / JSF 2.3 / Hibernate 5.6 / iText / POI) flattened into java/mss-failsafe/ as the only mss-failsafe in git - Working tree captured = master tip 2a142b5 + in-progress uncommitted work (incl. .github/*.instructions.md AI-context files) - Archive the standalone repo's 33-commit history in GIT_HISTORY_ARCHIVE.md since its .git was not migrated This is the source of truth / base for the upcoming upgraded rewrite.
47 lines
2.0 KiB
Markdown
Executable File
47 lines
2.0 KiB
Markdown
Executable File
# PDF Generation Instructions
|
|
|
|
Aktualisiert: 2025-10-20
|
|
|
|
## Kontext
|
|
PDF-Erstellung erfolgt aktuell über Hilfsmethoden in `AbstractController` mittels iText7.
|
|
|
|
## Kern-Hilfsmethoden
|
|
- `loadCompanyLogo()` -> Lädt Logo aus LOGO_PATH.
|
|
- `generateSorroundingTable(String header, float maxWidth)` -> Einspaltige Rahmen-Tabelle mit Header.
|
|
- `generateInnerTable(Text header, boolean last, String... values)` -> 2-Spalten Tabelle mit alternierender Hintergrundfarbe.
|
|
- `generateInnerTable(Text header, int nrColumns, boolean last, String... values)` -> Generisch n-Spalten Tabelle.
|
|
- `addInnerCells(Table table, String name, String value, boolean isGray)` / Overload -> Fügt Datenzeilen hinzu.
|
|
- `addPagenumbers(Document document, String ticketNr, Image nextPagesCompanyLogo)` -> Fügt Seitenzahlen & Logo hinzu.
|
|
|
|
## Gestaltungsrichtlinien
|
|
- Fonts: Standard Helvetica / Bold (Konstanten `FONT_NORMAL`, `FONT_BOLD`).
|
|
- Schriftgrößen klein (8F Inhalte, 11F Header, 12F Hauptheader) für konsistente Layouts.
|
|
- Wechselnde Hintergrundfarbe (LIGHT_GRAY) zur besseren Lesbarkeit.
|
|
|
|
## Erweiterung
|
|
Neue Tabellen-/Layout-Funktionen:
|
|
1. Prüfen ob existierende Methoden erweiterbar statt neue Variante.
|
|
2. Konsistenz in Font & Spaltenbreiten wahren.
|
|
3. Kein Hardcode von absoluten Positionen außer bei Kopf-/Fußzeilen.
|
|
|
|
## Ressourcen Pfade
|
|
- LOGO_PATH statisch: `/rundata/logo.png`. Anpassungen zentral vornehmen.
|
|
|
|
## Fehlerhandhabung
|
|
- Aktuell wenige try/catch Blöcke; bei Erweiterung: Fehler loggen (`LOGGER.error(e)`) und Benutzer über Controller Messages informieren.
|
|
|
|
## Edge Cases
|
|
- Leere Werte -> `-/-` Platzhalter.
|
|
- Null Tabelleninstanz in addInnerCells -> early return.
|
|
|
|
## Verbesserungen
|
|
- Einführung eines PDFUtility Service zur Entkopplung vom Controller.
|
|
- Parameterobjekt für dynamische Tabellenkonfiguration (Spaltenbreiten, Farben, Größen).
|
|
|
|
## Generator Leitplanken
|
|
- iText7 API weiterverwenden; keine neuen PDF Libraries.
|
|
- Wiederverwendbare Logik nicht direkt im konkreten Controller implementieren -> Utility / Service.
|
|
|
|
---
|
|
|