티스토리 뷰

필요한 것

  • 서버리스 플랫폼 (Firebase Cloud Functions, AWS Lambda 등)

  • 클라우드 스토리지 (Firebase Storage, AWS S3 등)

  • Puppeteer

  • Handlebars (HTML 템플릿 언어)

방법

  1. 각 서버리스 플랫폼에서 제공하는 프로젝트 초기화 방식으로 node.js 기반의 서버를 생성한다.

  2. puppeteer와 handlebars를 npm으로 설치

  3. 템플릿으로 사용할 HTML 파일을 클라우드 스토리지에 올려둔다.

  4. 함수 내부 플로우

    1. 클라우드 스토리지에서 파일을 다운받는다.

    2. API body로 템플릿에 필요한 파라미터를 가져온다.

    3. 추가 계산/분석 로직이 필요하면 작업한다.

    4. handlebars를 이용해 컴파일하고 결과물을 임시로 만든 html 파일에 저장한다. (node.js의 기본모듈 path, fs 사용)

    5. 저장한 html 파일을 puppeteer를 이용해 pdf로 export 시킨다.

    6. Response.sendFile로 생성된 pdf 파일을 전달

    7. response.on('finished') 이벤트가 호출되면 fs에 링크된 html, pdf 파일 (임시) 들을 unlink 한다.

 

레퍼런스

https://www.youtube.com/watch?v=dc_mCv2pmSA

댓글