피드로 돌아가기
I automated PDF generation for 1,600 security guides — WeasyPrint lessons
Dev.toDev.to
Backend

WeasyPrint 기반 1,600개 보안 가이드 PDF 자동화 파이프라인 구축

I automated PDF generation for 1,600 security guides — WeasyPrint lessons

Ayi NEDJIMI2026년 5월 22일6intermediate

Context

보안 컨설팅 사이트의 1,600개 아티클을 오프라인으로 제공하기 위한 PDF 다운로드 기능 구현 필요성 대두. 기존 서버 렌더링 HTML을 PDF로 변환하는 과정에서 브라우저 바이너리 의존성 제거와 CSS Print Media Query 지원이 핵심 요구사항으로 식별됨.

Technical Solution

  • Puppeteer의 브라우저 의존성과 wkhtmltopdf의 렌더링 결함을 배제하고 CSS Pint 및 Cairo 기반의 WeasyPrint 채택
  • Go Fiber 백엔드(localhost:4001)에서 HTML을 페치하여 로컬 경로에 PDF를 생성하는 Python 기반 자동화 스크립트 설계
  • pikepdf를 활용하여 정적 커버 페이지와 생성된 콘텐츠 PDF를 병합하는 포스트 프로세싱 단계 추가
  • @media print 전용 스타일시트를 통해 네비게이션, 쿠키 배너 등 불필요한 UI 요소를 제거하고 가독성을 위한 폰트 및 페이지 브레이크 최적화 적용
  • 서버 성능 저하 및 네트워크 레이턴시 방지를 위해 CDN 폰트 대신 로컬 폰트 파일을 직접 참조하는 @font-face 설정
  • 파일 권한 충돌 방지를 위해 크론잡 실행 계정을 root에서 www-data로 통일하여 웹 서버와 소유권 일치

1. Print CSS 테스트는 개발 초기 단계에서 브라우저 Ctrl+P를 통해 검증할 것

2. 대량의 리소스 생성 시 전체 재생성 대신 DB 타임스탬프 기반의 Incremental Update 구조를 설계할 것

3. 메모리 집약적인 PDF 생성 작업은 API 요청 내 inline 처리가 아닌 Queue 기반의 백그라운드 프로세스로 분리할 것

원문 읽기