Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래밍기초
- 스파르타코딩클럽 후기
- 바이트디그리
- K디지털크레딧
- 알고리즘
- react-native
- mongodb
- styled-components
- ionic
- ionic react
- react
- HTML
- 프로그래밍첫걸음시작하기
- javascript
- 패스트캠퍼스
- PYTHON
- 부트캠프
- 내일배움카드
- Firebase
- next.js 빌드 오류
- styled components
- React Native
- Algorithm
- 프로그래머스
- spartacodingclub
- typescript
- CSS
- 항해99
- 스파르타코딩클럽
- ionic-react
Archives
- Today
- Total
bravo my life!
2024.09.09 서류 발급 서비스 개선 프로젝트 회고 본문
728x90
서비스 개선의 필요성 대두
기존 서류 발급 기능은 불편한 점이 더러 있었는데 그 중 하나는 여러 문서를 한 번에 인쇄, 다운로드를 할 수 없는 것이었다.
최대 네 개의 문서를 발급할 수 있는데, 저장이나 인쇄를 하기 위해서는 각 문서마다 네 번의 저장이나, 네 번의 다운로드 버튼 클릭이 필요했다.
pdf 병합 기능 검토
현재 사용하는 pdf 관련 라이브러리는 다음과 같다.
react-pdf - pdf 미리보기 라이브러리
@react-pdf/renderer - pdf 문서 생성 라이브러리
react-pdf 라이브러리 공식문서를 확인해 보아도 pdf를 병합해 하나의 파일로 만들어 주는 기능을 찾을 수는 없었다.
pdf-merger-js 라이브러리를 알게 되었는데 이름 그대로 pdf를 병합할 수 있는 라이브러리다.
node.js 기반의 라이브러리이기 때문에 클라이언트 측에서 실행이 불가능 했다고 하는데 업데이트로 클라이언트 측에서 실행이 가능하도록 기능이 변경됐다고 한다.
개략적인 pdf 병합 기능 사용 방법
개선 전 사용 방법
- @react-pdf/renderer는 pdf 문서를 생성하는 라이브러리이다. 라이브러리가 제공하는 태그를 이용해 pdf 문서를 생성할 수 있고, 만들어진 pdf 문서를 url, blob의 형태로 반환한다.
- react-pdf는 만들어진 pdf 문서를 보여주는 것이 주된 기능이다.
- @react-pdf/renderer로 만든 pdf를 url이나 blob의 형태로 react-pdf에 전달한 후 pdf 문서를 미리보기 할 수 있다.
개선 후 사용 방법 (pdf-merger-js 사용)
- @react-pdf/renderer로 만든 pdf를 url이나 blob의 형태로 배열로 만든다. (예. [blob1, blob2, ......])
- blob 배열을 pdf-merger-js로 전달한다.
-
const [mergedPdfUrl, setMergedPdfUrl] = useState(); useEffect(() => { if (blobs.length > 0) { const render = async () => { const merger = new PDFMerger(); for (const file of blobs) { await merger.add(file); } await merger.setMetadata({ producer: "test pdf", }); const mergedPdf = await merger.saveAsBlob(); const url = URL.createObjectURL(mergedPdf); setMergedPdfUrl(url); }; render().catch((err) => { console.error("Failed to merge PDFs", err); }); return () => { setMergedPdfUrl(undefined); }; } }, [blobs]);
- mergedPdfUrl에 저장된 pdf 병합 문서를 react-pdf로 전달한다.
-
'개발기 > [회사] 프로젝트 회고' 카테고리의 다른 글
[이슈] next.js 빌드 오류 useSearchParams() should be wrapped in a suspense boundary at page "/login". (0) | 2025.02.18 |
---|---|
[이슈] window.scrollTo(0, 0)이 작동하지 않는 경우 (0) | 2025.02.18 |
2025.02.06 서비스 리뉴얼 프로젝트 세팅 (0) | 2025.02.06 |
2024.03.28 프로젝트 회고 (1) | 2024.03.28 |