피드로 돌아가기
How I Split PDFs in the Browser with Vue 3 and pdf-lib
Dev.toDev.to
Frontend

pdf-lib 기반 Client-side PDF 분할 시스템 설계

How I Split PDFs in the Browser with Vue 3 and pdf-lib

sunshey2026년 6월 25일5beginner

Context

민감 정보 포함 가능성이 높은 PDF 파일의 서버 업로드 과정에서 발생하는 보안 리스크 및 네트워크 대역폭 낭비 문제 해결 필요. 서버리스 환경의 즉각적인 파일 처리를 통한 개인정보 보호 및 처리 속도 향상을 목표로 함.

Technical Solution

  • PDFDocument.load를 통한 ArrayBuffer 기반의 브라우저 내 PDF 바이너리 로드 구조 설계
  • 1-based User Index와 0-based Library Index 간의 정밀한 매핑을 통한 페이지 범위 파싱 로직 구현
  • PDFDocument.create 및 copyPages 메서드를 활용하여 원본 재렌더링 없는 페이지 추출로 데이터 무결성 유지
  • Blob 객체와 URL.createObjectURL 기반의 동적 앵커 태그 생성을 통한 다중 파일 다운로드 파이프라인 구축
  • 정규 표현식 기반의 범위 입력값 전처리로 입력 예외 상황을 방지하는 방어적 파싱 전략 적용

- 브라우저 내 PDF 처리 시 메모리 효율을 위해 ArrayBuffer 및 Blob 활용 검토 - 사용자 입력값(1-based)과 내부 인덱스(0-based)의 간극을 처리하는 변환 레이어 분리 - 대량 파일 다운로드 시 브라우저 팝업 차단 정책에 따른 UX 대응 방안 마련 - PDF 품질 저하 방지를 위한 재인코딩 대신 Page Copy 방식의 라이브러리 기능 활용

원문 읽기