From 541483217d6336a0f4322a839d68c1e25c8b6a60 Mon Sep 17 00:00:00 2001 From: s4luorth Date: Fri, 25 Sep 2026 08:52:52 +0200 Subject: [PATCH] A6 quer rollenschonend: Zeichen fuer Zeichen (1), nicht in Bloecken Default proReihe/group auf 1 gesenkt: bei aktivem rollenschonendem Druck wird streng spaltenweise ein Zeichen nach dem anderen geschrieben (ein Zeichen, Zeile tiefer, dann naechste Spalte), damit die Rolle minimal faehrt. Weiterhin ueber ?group=N uebersteuerbar. Co-Authored-By: Claude Opus 4.8 --- extensions/directus-extension-skrift-orders/dist/index.js | 4 ++-- extensions/directus-extension-skrift-produktion/dist/index.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/directus-extension-skrift-orders/dist/index.js b/extensions/directus-extension-skrift-orders/dist/index.js index 41eb578..f1ebe24 100644 --- a/extensions/directus-extension-skrift-orders/dist/index.js +++ b/extensions/directus-extension-skrift-orders/dist/index.js @@ -1100,7 +1100,7 @@ const handler = (router, { services, getSchema, logger }) => { // behalten ihre Position. Das sichtbare Ergebnis ist identisch – nur die // Druckreihenfolge ändert sich, sodass der rollengeführte Plotter monoton in // Vorschubrichtung fährt statt je Zeile die Rolle zurückzuspulen (A6 quer). - function svgSpaltenweise(svg, proReihe = 2) { + function svgSpaltenweise(svg, proReihe = 1) { // …-Blöcke (z. B. eingebettete Signaturen) als Ganzes schützen – deren // innere Pfade dürfen NICHT umsortiert werden (sie hängen an einem eigenen // Gruppen-Transform). Signaturen stehen hinter dem Text, daher greedy bis zum @@ -1160,7 +1160,7 @@ const handler = (router, { services, getSchema, logger }) => { // Optional: SVG spaltenweise umsortieren (rollenschonend, A6 quer). if (ziel.endsWith('.svg') && String(req.query.reorder || '') === 'column') { try { - const proReihe = Math.max(1, Math.min(100, parseInt(req.query.group, 10) || 2)); + const proReihe = Math.max(1, Math.min(100, parseInt(req.query.group, 10) || 1)); const umsortiert = svgSpaltenweise(fs.readFileSync(ziel, 'utf8'), proReihe); res.setHeader('Content-Type', 'image/svg+xml'); res.setHeader('Content-Disposition', `attachment; filename="${path.basename(ziel)}"`); diff --git a/extensions/directus-extension-skrift-produktion/dist/index.js b/extensions/directus-extension-skrift-produktion/dist/index.js index a2b99dc..7778754 100644 --- a/extensions/directus-extension-skrift-produktion/dist/index.js +++ b/extensions/directus-extension-skrift-produktion/dist/index.js @@ -1486,7 +1486,7 @@ const Board = defineComponent({ h('input', { type: 'checkbox', checked: druck.spaltenweise, onChange: (e) => { druck.spaltenweise = e.target.checked; }, style: 'width:18px;height:18px;' }), h('span', { style: 'font-weight:600;' }, 'Rollenschonend drucken (spaltenweise)'), ]), - subdued('Für A6 quer: es werden ~2 Zeichen je Reihe geschrieben, dann in derselben Bahn eine Zeile tiefer, erst danach die nächste Spalte. So spult die Rolle nur eine Bahnbreite zurück statt je Zeile die ganze Zeile. Sichtbares Ergebnis bleibt gleich – nur Schriftstücke, nicht Kuverts.', 'margin-top:6px;'), + subdued('Für A6 quer: Zeichen für Zeichen spaltenweise (ein Zeichen, dann eine Zeile tiefer, dann die nächste Spalte), damit die Rolle möglichst wenig vor/zurück fährt. Sichtbares Ergebnis bleibt gleich – nur Schriftstücke, nicht Kuverts.', 'margin-top:6px;'), ]) : null, h('div', { style: 'margin:12px 0 4px;' }, [ segToggle(busy ? 'queue' : druck.mode, [