diff --git a/app/Services/ESign/PdfSignatureService.php b/app/Services/ESign/PdfSignatureService.php index 0c4a1034..2b0d5c52 100644 --- a/app/Services/ESign/PdfSignatureService.php +++ b/app/Services/ESign/PdfSignatureService.php @@ -232,7 +232,31 @@ private function overlayImage(Fpdi $pdf, EsignSignField $field, float $x, float return; } - $pdf->Image($imagePath, $x, $y, $w, $h, 'PNG'); + // 원본 이미지 비율 유지: 필드 영역 내에 contain 방식으로 배치 + $imgSize = @getimagesize($imagePath); + if ($imgSize && $imgSize[0] > 0 && $imgSize[1] > 0) { + $imgRatio = $imgSize[0] / $imgSize[1]; // 원본 가로/세로 비율 + $fieldRatio = $w / $h; + + if ($imgRatio > $fieldRatio) { + // 이미지가 필드보다 가로로 넓음 → 가로 맞춤, 세로 축소 + $renderW = $w; + $renderH = $w / $imgRatio; + } else { + // 이미지가 필드보다 세로로 높음 → 세로 맞춤, 가로 축소 + $renderH = $h; + $renderW = $h * $imgRatio; + } + + // 필드 영역 중앙에 배치 + $renderX = $x + ($w - $renderW) / 2; + $renderY = $y + ($h - $renderH) / 2; + + $pdf->Image($imagePath, $renderX, $renderY, $renderW, $renderH, 'PNG'); + } else { + // 이미지 크기 읽기 실패 시 기존 방식 유지 + $pdf->Image($imagePath, $x, $y, $w, $h, 'PNG'); + } } /**