[카카오] ® → ? => (R) and PDF font #433

Merged
ysCha merged 1 commits from dev into dev-deploy 2026-03-17 17:50:53 +09:00
2 changed files with 17 additions and 14 deletions

View File

@ -1504,19 +1504,22 @@ public class EstimateService {
} while (!prevName.equals(itemName) && itemName.contains("&")); } while (!prevName.equals(itemName) && itemName.contains("&"));
} }
// 3. 엑셀/PDF 폰트(MS PGothic, BIZUDPGothic) 미지원 특수문자 치환 // 3. 폰트 미지원 특수문자 치환
// (U+24C7) Enclosed Alphanumerics는 일본어 폰트가 지원하므로 깨지지 않음 // PDF는 PdfUtil에서 표준 폰트 fallback으로 ® 등을 렌더링하므로 치환 불필요
itemName = itemName // Excel은 MS PGothic 고정이므로 ASCII로 치환
.replace("\u00AE", "\u24C7") // ® if (!isPdfDownload) {
.replace("\u2122", "(TM)") // (TM) itemName = itemName
.replace("\u00A9", "(C)") // © (C) .replace("\u00AE", "(R)") // ® (R)
.replace("\u2013", "-") // (en dash) - .replace("\u2122", "(TM)") // (TM)
.replace("\u2014", "-") // (em dash) - .replace("\u00A9", "(C)") // © (C)
.replace("\u2018", "'") // ' ' .replace("\u2013", "-") // (en dash) -
.replace("\u2019", "'") // ' ' .replace("\u2014", "-") // (em dash) -
.replace("\u201C", "\"") // "" .replace("\u2018", "'") // ' '
.replace("\u201D", "\"") // "" .replace("\u2019", "'") // ' '
.replace("\u2026", "..."); // ... .replace("\u201C", "\"") // ""
.replace("\u201D", "\"") // ""
.replace("\u2026", "..."); // ...
}
itemResponse.setItemName(itemName); itemResponse.setItemName(itemName);
} catch (Exception e) { } catch (Exception e) {

View File

@ -265,7 +265,7 @@ public class PdfUtil {
* @return 설정된 FontProvider * @return 설정된 FontProvider
*/ */
private static DefaultFontProvider setFontProvider(String fontPath) throws IOException { private static DefaultFontProvider setFontProvider(String fontPath) throws IOException {
DefaultFontProvider fontProvider = new DefaultFontProvider(false, false, false); DefaultFontProvider fontProvider = new DefaultFontProvider(false, true, false);
InputStream fontStream = PdfUtil.class.getClassLoader().getResourceAsStream(fontPath); InputStream fontStream = PdfUtil.class.getClassLoader().getResourceAsStream(fontPath);
if (fontStream != null) { if (fontStream != null) {