fix: [esign] 운영서버 PDF 미리보기 필드값 누락 수정
- TCPDF K_PATH_FONTS를 storage/fonts/tcpdf/로 설정하여 vendor 쓰기 권한 문제 해결 - 사전 생성된 Pretendard 폰트 정의 파일 포함 (런타임 생성 불필요) - downloadDocument() 에러 로깅 상세화 (trace 포함)
This commit is contained in:
@@ -12,9 +12,21 @@ class PdfSignatureService
|
||||
{
|
||||
private ?string $koreanFontName = null;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
// TCPDF 클래스 로드 전에 K_PATH_FONTS를 쓰기 가능한 디렉토리로 설정
|
||||
// (운영서버에서 vendor/tecnickcom/tcpdf/fonts/ 쓰기 권한 없는 문제 방지)
|
||||
if (! defined('K_PATH_FONTS')) {
|
||||
$tcpdfFontsDir = dirname(__DIR__, 3).'/storage/fonts/tcpdf/';
|
||||
if (is_dir($tcpdfFontsDir)) {
|
||||
define('K_PATH_FONTS', $tcpdfFontsDir);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Pretendard 한글 폰트를 등록하고 폰트 이름을 반환한다.
|
||||
* PDF 문서와 동일한 폰트로 필드 텍스트를 렌더링하여 일관성을 유지한다.
|
||||
* 사전 생성된 폰트 정의 파일이 storage/fonts/tcpdf/에 있으면 바로 사용한다.
|
||||
*/
|
||||
private function getKoreanFont(): string
|
||||
{
|
||||
@@ -22,11 +34,21 @@ private function getKoreanFont(): string
|
||||
return $this->koreanFontName;
|
||||
}
|
||||
|
||||
// 1순위: 프로젝트 내장 Pretendard (로컬/서버 공통)
|
||||
$fontPath = storage_path('fonts/Pretendard-Regular.ttf');
|
||||
// 사전 생성된 폰트 정의 파일이 K_PATH_FONTS에 있으면 바로 사용
|
||||
if (defined('K_PATH_FONTS') && file_exists(K_PATH_FONTS.'pretendard.php')) {
|
||||
$this->koreanFontName = 'pretendard';
|
||||
|
||||
return $this->koreanFontName;
|
||||
}
|
||||
|
||||
// 폴백: TTF에서 런타임 생성 시도
|
||||
$fontPath = storage_path('fonts/Pretendard-Regular.ttf');
|
||||
if (file_exists($fontPath)) {
|
||||
$this->koreanFontName = \TCPDF_FONTS::addTTFfont($fontPath, 'TrueTypeUnicode', '', 96);
|
||||
try {
|
||||
$this->koreanFontName = \TCPDF_FONTS::addTTFfont($fontPath, 'TrueTypeUnicode', '', 96);
|
||||
} catch (\Throwable $e) {
|
||||
Log::warning('TCPDF 한글 폰트 등록 실패', ['error' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->koreanFontName ?: 'helvetica';
|
||||
|
||||
Reference in New Issue
Block a user