Dynamisches Layout in Publixx
Überblick
Das dynamische Layout ermöglicht es, dass sich Textrahmen automatisch an unterschiedlich lange Inhalte anpassen können, während bestimmte Elemente (z.B. Logo, Header, Footer) ihre feste Position behalten.
Prinzip: Gesperrte Elemente = Festes Layout | Nicht-gesperrte Elemente = Dürfen wachsen
Arbeitsablauf
Schritt 1: Template erstellen
Erstelle dein Template mit allen Elementen in der gewünschten Grundanordnung:
- Platziere alle Elemente (Texte, Bilder, Tabellen, etc.)
- Definiere die Standardgrößen für den "Normalfall"
- Achte auf ausreichend Platz nach unten für wachsende Elemente
Schritt 2: Feste Elemente sperren
Elemente, die ihre Position niemals ändern sollen, werden gesperrt:
- Element auswählen
- Im Inspector: Aktionen → Element Eigenschaften
- Checkbox "Gesperrt" aktivieren ✓
Typische Kandidaten zum Sperren:
- Logo
- Header / Kopfzeile
- Footer / Fußzeile
- Seitenzahlen
- Navigation / Menüleiste
- Hintergrundbilder
- Rahmen / Bordüren
Nicht sperren (dürfen wachsen):
- Produktbeschreibungen
- Textfelder mit variablem Inhalt
- Tabellen mit unterschiedlicher Zeilenanzahl
- Listen mit variabler Länge
Schritt 3: Dynamisches Layout aktivieren
- Im Inspector: Aktionen → Dynamisches Layout
- "Dynamisches Layout aktivieren" wählen
- Optional: "Für alle Datensätze berechnen" ausführen
Schritt 4: Individuelle Positionen bearbeiten (optional)
Für Feinabstimmung bei einzelnen Datensätzen:
- Aktionen → Dynamisches Layout → "Individuelle Position bearbeiten"
- Zum gewünschten Datensatz navigieren
- Nicht-gesperrte Elemente manuell verschieben/anpassen
- Erneut klicken um den Bearbeitungsmodus zu beenden
- Positionen werden automatisch im Layout-Cache gespeichert
Verhalten der Elemente
| Element-Status | Größe | Position | Im Export |
|---|---|---|---|
| Gesperrt | Fest aus Template | Fest aus Template | Template-Werte |
| Nicht gesperrt | Kann wachsen | Kann sich verschieben | Aus Layout-Cache |
AutoFit-Verhalten
Beim Ausführen von AutoFit (automatische Größenanpassung):
- Gesperrte Elemente: Werden übersprungen
- Nicht-gesperrte Elemente: Werden an Inhalt angepasst
- Kollisionserkennung: Nur nicht-gesperrte Elemente werden bei Überlappung verschoben
Beispiel-Szenario: Produktdatenblatt
┌─────────────────────────────────────┐
│ 🔒 LOGO 🔒 HEADER │ ← Gesperrt
├─────────────────────────────────────┤
│ │
│ Produktname │ ← Nicht gesperrt (kann wachsen)
│ │
│ Beschreibung │ ← Nicht gesperrt (kann wachsen)
│ (variabler Text) │
│ │
│ Technische Daten │ ← Nicht gesperrt (kann wachsen)
│ (Tabelle, variable Zeilen) │
│ │
├─────────────────────────────────────┤
│ 🔒 FOOTER 🔒 SEITENZAHL │ ← Gesperrt
└─────────────────────────────────────┘
Ergebnis: Bei einem Produkt mit langer Beschreibung wächst der Beschreibungsrahmen nach unten, die technischen Daten rutschen mit – aber Logo, Header und Footer bleiben immer an ihrer Position.
Tipps & Best Practices
Do's ✓
- Sperren Sie alle Rahmenelemente (Header, Footer, Logo)
- Planen Sie Platz ein für wachsende Textfelder
- Testen Sie mit Extremfällen (kürzester und längster Text)
- Nutzen Sie die Vorschau mit verschiedenen Datensätzen
Don'ts ✗
- Nicht alles sperren – dann funktioniert das dynamische Layout nicht
- Keine überlappenden gesperrten Elemente mit wachsenden Bereichen
- Nicht vergessen: Gesperrte Elemente werden auch bei Kollisionen nicht verschoben
Technische Details
Layout-Cache
Die dynamischen Positionen werden pro Datensatz im layoutCache gespeichert:
- Nur nicht-gesperrte Elemente werden gecacht
- Der Cache wird bei Template-Änderungen zurückgesetzt
- Export-Funktionen wenden den Cache automatisch an
Betroffene Funktionen
Das locked-Flag wird berücksichtigt in:
- renderCanvas() – Anzeige im Editor
- AutoFit – Automatische Größenanpassung
- applyDynamicLayout() – Export-Vorbereitung
- Alle Exporte (PDF, PowerPoint, Word, HTML, Video, etc.)
Fehlerbehebung
| Problem | Lösung |
|---|---|
| Element bewegt sich trotz Sperre | Prüfen ob locked: true im Element gesetzt ist |
| Dynamisches Layout hat keinen Effekt | Mindestens ein Element muss entsperrt sein |
| Positionen werden nicht gespeichert | "Individuelle Position bearbeiten" aktivieren |
| Export zeigt falsche Positionen | "Für alle Datensätze berechnen" ausführen |
Verwandte Funktionen
- AutoFit: Automatische Textrahmen-Anpassung an Inhalt
- Best-Fit: Optimale Schriftgröße für feste Rahmengröße
- Template Router: Automatische Template-Auswahl nach Dateninhalt