fix: [esign] 서명/도장 이미지 원본 비율 유지하여 PDF 합성

- overlayImage()에서 원본 이미지 가로세로 비율 계산
- 필드 영역 내 contain 방식 배치 (비율 유지 + 중앙 정렬)
- getimagesize 실패 시 기존 방식 폴백
This commit is contained in:
김보곤
2026-02-27 17:22:19 +09:00
parent 88b73a0c3c
commit df8707776c

View File

@@ -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');
}
}
/**