피드로 돌아가기
Dev.toFrontend
원문 읽기
Client-side Canvas Flattening을 통한 PNG 투명도 렌더링 이슈 해결
PNG to PDF without losing transparency: what most converters get wrong
AI 요약
Context
PDF 페이지의 불투명 특성으로 인해 Transparent PNG 변환 시 뷰어에 따라 배경이 검은색으로 출력되는 렌더링 불일치 발생. 단순한 파일 변환으로는 제어 불가능한 PDF 뷰어별 Alpha Channel 처리 방식의 한계 직면.
Technical Solution
- pdf-lib 라이브러리를 활용한 Pure JavaScript 기반의 Client-side PDF 생성 구조 설계
- HTML5 Canvas API를 도입하여 PNG 임베딩 전 배경색을 강제 지정하는 Flattening 프로세스 구현
- 사용자의 목적에 따라 White, Black, Keep Transparency의 3가지 렌더링 모드를 제공하는 전략 채택
- 배경색 칠하기 후 이미지를 얹는 순차적 드로잉 로직을 통한 Alpha Channel의 명시적 색상 결정
- Lossless 품질 유지를 위해 JPG 변환을 배제하고 PNG 포맷 그대로 PDF에 Embed 하는 방식 적용
- 서버 전송 없는 브라우저 내 로컬 처리 구조를 통해 데이터 전송 비용 및 보안 리스크 제거
실천 포인트
- PDF 변환 시 뷰어별 렌더링 차이를 방지하기 위해 투명 영역의 배경색을 명시적으로 정의할 것 - 고해상도 텍스트나 다이어그램 포함 이미지의 경우 JPG 변환 대신 PNG Lossless 임베딩을 검토할 것 - 단순 변환 툴의 경우 서버 리소스 절감과 개인정보 보호를 위해 Client-side 라이브러리 활용 가능성을 우선 고려할 것