getSize(); echo "Matrix size: {$size}x{$size}\n\n"; // Test different styles $styles = [ 'default' => QrCodeStyle::default(), 'large' => QrCodeStyle::large(), ]; foreach ($styles as $name => $style) { echo "=== Style: {$name} ===\n"; echo "Module size: {$style->moduleSize}px\n"; echo "Quiet zone size: {$style->quietZoneSize} modules\n"; echo "Include quiet zone: " . ($style->includeQuietZone ? 'YES' : 'NO') . "\n"; $canvasSize = $style->calculateCanvasSize($size); $offset = $style->getQuietZoneOffset(); echo "Canvas size: {$canvasSize}x{$canvasSize}px\n"; echo "Quiet zone offset: {$offset}px\n"; echo "QR code area: " . ($size * $style->moduleSize) . "x" . ($size * $style->moduleSize) . "px\n"; echo "Quiet zone border: {$offset}px on each side\n\n"; // Generate SVG $renderer = new QrCodeRenderer(); $svg = $renderer->renderSvg($matrix, $style); // Check if quiet zone is present in SVG $hasQuietZone = $offset > 0; $quietZoneInSvg = strpos($svg, "width=\"{$canvasSize}\"") !== false; echo "SVG has quiet zone: " . ($quietZoneInSvg ? 'YES' : 'NO') . "\n"; // Save SVG $filename = "/var/www/html/tests/debug/qr-{$name}.svg"; file_put_contents($filename, $svg); echo "SVG saved to: {$filename}\n"; echo "SVG size: " . strlen($svg) . " bytes\n\n"; } echo "=== Quiet Zone Requirements ===\n"; echo "ISO/IEC 18004 requires:\n"; echo "- Minimum 4 modules quiet zone on all sides\n"; echo "- Quiet zone must be white/light color\n"; echo "- Quiet zone must be free of any markings\n\n"; echo "✅ Quiet zone should be correct if offset > 0 and background is light color.\n";