Skip to content

Out-of-bounds audit: Off-Page-IDML-Cruft erkennen & entfernen#143

Merged
flomotlik merged 1 commit into
mainfrom
feat/out-of-bounds-audit
Jun 8, 2026
Merged

Out-of-bounds audit: Off-Page-IDML-Cruft erkennen & entfernen#143
flomotlik merged 1 commit into
mainfrom
feat/out-of-bounds-audit

Conversation

@flomotlik

Copy link
Copy Markdown
Contributor

Befund (validiert)

Der IDML-Import hinterließ ~240 Objekte außerhalb des druckbaren Bereichs über 12 Templates (Seitenrand-Marker, Falz-/Registrierlinien, Farbswatches) sowie einige weit überstehende Hintergrundflächen (z. B. doppelt-seitenbreite grüne Fläche). Unsichtbar im zugeschnittenen PDF, aber Cruft im SLA — bestätigt am flyer-a6-hochformat-portraet.

Audit

tools/out_of_bounds_audit.py — rotationsbewusst, prüft jedes PAGEOBJECT gegen sein Seite+Bleed-Rechteck (3 mm). Klassen:

  • off-page Shapes/Linien (entfernbar) → FAIL
  • off-page Text-/Bild-Frames (gehalten) → WARN
  • Überhang über Seite+Bleed → WARN

Als Gate in bin/ci-local und .github/workflows/pages.yml integriert.

Entfernung

Document.save() prunt beim Speichern alle off-page Shapes/Linien (PTYPE 6/7) ohne Text — der Großteil des Cruft, über alle Templates, beim Generieren. Text-Frames (PTYPE 4) und Bilder (PTYPE 2) werden bewusst NICHT entfernt: deren Entfernen lässt Scribus on-page-Text auf manchen Templates unterdrücken (verifiziert), und sie sind im Output ohnehin unsichtbar.

Ergebnis

Alle 16 Templates neu generiert (off-page Shapes/Linien = 0), gerendert (Render unverändert, 0 Fehler), ci-local PASS. Verbleibende off-page Text/Bild-Frames + Überhänge sind als WARN gemeldet (nicht zwangsentfernt — bricht sonst den Render; im Druck-PDF unsichtbar).

Validierung: IDML-Import hinterliess ~240 Objekte ausserhalb des druckbaren
Bereichs (Seitenrand-Marker, Falz-/Registrierlinien, Farbswatches) plus einige
Hintergrundflaechen, die weit ueber die Seite hinausragen — unsichtbar im
zugeschnittenen PDF, aber Cruft im SLA (Bsp. flyer-a6-hochformat-portraet).

- tools/out_of_bounds_audit.py: rotationsbewusstes Audit, das jedes
  PAGEOBJECT gegen sein Seiten+Bleed-Rechteck prueft. Klassen: off-page
  Shapes/Linien (entfernbar -> FAIL), off-page Text/Bild-Frames (gehalten ->
  WARN) und Ueberhang (WARN). --slug / --all.
- Document.save(): _prune_offpage entfernt beim Speichern alle off-page
  Shapes/Linien (PTYPE 6/7) ohne Text — der Grossteil des Cruft. Text-Frames
  (PTYPE 4) und Bilder (PTYPE 2) werden NICHT entfernt: ihr Entfernen laesst
  Scribus on-page-Text auf manchen Templates unterdruecken (verifiziert), und
  sie sind im Output ohnehin unsichtbar.
- Gate: out_of_bounds_audit in bin/ci-local und .github/workflows/pages.yml —
  CI faellt, wenn off-page Shapes/Linien durchrutschen.
- Alle 16 Templates neu generiert (off-page Shapes/Linien entfernt) und
  gerendert; Render unveraendert, ci-local PASS.

Hinweis: gross ueberstehende Hintergrundflaechen (z. B. doppelt-seitenbreite
gruene Flaeche) bleiben als WARN gemeldet — ein automatisches Clampen brach den
Render und der Ueberhang ist im zugeschnittenen Druck-PDF unsichtbar.
@flomotlik flomotlik merged commit b2e1687 into main Jun 8, 2026
3 checks passed
@flomotlik flomotlik deleted the feat/out-of-bounds-audit branch June 8, 2026 13:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant