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 <noreply@anthropic.com>
This commit is contained in:
s4luorth
2026-09-25 08:52:52 +02:00
parent 73e7a878f1
commit 541483217d
2 changed files with 3 additions and 3 deletions

View File

@@ -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) {
// <g>…</g>-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)}"`);