fix: [esign] 서명/도장 이미지 원본 비율 유지하여 PDF 합성
- overlayImage()에서 원본 이미지 가로세로 비율 계산 - 필드 영역 내 contain 방식 배치 (비율 유지 + 중앙 정렬) - getimagesize 실패 시 기존 방식 폴백
This commit is contained in:
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user