@teamturing/pdf-gen
v1.0.33
Published
`@teamturing/pdf-gen`
Downloads
13
Readme
PDF Gen Package
@teamturing/pdf-gen
Purpose
수학대왕 DB의 문제들을 가지고 PDF를 뽑아내는 npm package
How it works
- 문제들은 원래 LaTeX로 렌더링되지만 MathKingProblemPdfGenerator AWS Lambda의 Node서버에 Pupettier를 이용해 Node 환경에서 LaTeX를 렌더링한다음 문제 렌더링의 결과물을 이미지로 저장할 수 있는 함수가 있다.
- 서버는 1번의 API를 이용해 미리 모든 문제에 대해 특정 넓이에 대해서 이미지를 만들어둔다.
- 이 패키지의 인자로 문제 이미지들과 메타데이터들이 전달되면 PDF를 만들어 S3에 업로드시킨다.
Tech
axios
: 모든 이미지를 사전에Buffer
화 해두는 역할jimp
: 이미지와 관련된 resize같은 동작을 도와주는 순수 JS 라이브러리winston
: 로거pdf-kit
: peer dependency로 존재하며 PDF생성
Tip
- 코드내의
doc
은pdf-kit
이 제공해주는 객체이며Doc
은 이 패키지안의 코드에 있는doc
을 쉽게 다루게 해주는 wrapper이다. - 대충이지만
src/internal/component
에 PDF에 요소들을 마치 컴포넌트처럼 렌더링 할 수 있는 시스템이 구축되어있고, 다른 예시를 참고하여 비슷하게 만들어 사용할 수 있다. pdf-kit
의 docs를 잘 참고하자.- 현재 이 라이브러리는 node환경에서만 동작하지만 pdf-kit의 독스를 보면 웹에서도 동작하게 하기위해 조금 변경해야할 항목들을 수정하면 가능해진다.
- 문제 배치 및 렌더링 로직은 모두
src/internal/util/ProblemRenderer.ts
에 존재하며 문제, 해설 렌더링 모두 담당한다. - ⚠️ 모든 static asset은
__dirname
을 이용한 상대경로로 정의하자. 그렇지 않으면 사용하는 곳에서 제대로 불러와지지 않을 수 있다.
Scripts
t
: 정적 검사dev
:test/output.pdf
로 샘플 pdf 생성, 인자는index.ts
에서 설정watch
:watchman
을 이용해src
코드가 변할 때test/output.pdf
를 자동생성build
: 패키지 빌드,rollup
사용, CJS로 빌드됨release
: npm에 patch version increment만 수행 후 바로 업로드하는 one line command