diff --git a/src/lib/svg-generator.js b/src/lib/svg-generator.js index 224e094..0ca756a 100644 --- a/src/lib/svg-generator.js +++ b/src/lib/svg-generator.js @@ -25,20 +25,39 @@ const SIG_CANVAS_H = 160; function buildSignatureElement(svgString, x, y, scale) { if (!svgString || typeof svgString !== 'string') return ''; - // Nur -Elemente extrahieren (unsere Signatur-SVGs enthalten ausschließlich Paths) - const pathRegex = //gi; + // viewBox der Signatur lesen, damit beliebige Quell-SVGs (z.B. Illustrator- + // Export mit eigener viewBox) korrekt normiert werden statt fix auf den + // 600×160-Zeichen-Canvas. Ohne viewBox: Fallback auf den Canvas (Alt-Signaturen). + let minx = 0; + let miny = 0; + let vh = SIG_CANVAS_H; + const vbM = svgString.match(/viewBox\s*=\s*"([^"]+)"/i); + if (vbM) { + const p = vbM[1].trim().split(/[\s,]+/).map(Number); + if (p.length === 4 && p[2] > 0 && p[3] > 0) { minx = p[0]; miny = p[1]; vh = p[3]; } + } + // Skala auf die Eigen-Höhe beziehen: Canvas-Signaturen (vh=160) unverändert, + // hochgeladene SVGs werden auf dieselbe Zielhöhe eingepasst. + const s = scale * (SIG_CANVAS_H / vh); + + // Alle Zeichen-Elemente extrahieren und IMMER als Single-Stroke ausgeben: + // fill:none + schwarzer Stroke inline; Klasse/Style/fill/stroke/width/height + // entfernen. So gehen per