Adobe를 대체하기 위해 오픈소스, 프라이버시 우선 PDF 툴킷(80개 이상)을 만들었습니다. 여기 스택입니다.

발행: (2026년 1월 8일 오후 11:51 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

I built an open-source, privacy-first PDF toolkit (80+ tools) to replace Adobe. Here is the stack.의 표지 이미지

The “Why”

개발자라면 민감한 문서(세금 양식, 계약서, 은행 명세서 등)를 무작위 “무료 PDF 병합기” 웹사이트에 업로드하는 것이 얼마나 불편한지 잘 아실 겁니다. “무료”는 보통 “당신이 제품이다”라는 의미이니까요.

제가 원했던 도구는 다음과 같습니다:

  • 100 % 로컬에서 실행 (파일이 브라우저를 떠나지 않음)
  • 오픈 소스 (코드를 직접 검증 가능)
  • 사용감이 좋은 (깔끔한 UI, 광고 없음, “하루에 3파일 제한” 같은 제약 없음)

그래서 PDFCraft 를 만들었습니다 – MIT 라이선스를 가진, Next.js와 WebAssembly로 구축된 클라이언트‑사이드 PDF 툴킷입니다.

  • Repo:
  • Demo:

The Tech Stack

Frontend Framework

Next.js (React) – 정적 사이트 생성(SSG)을 사용해 SEO 이점과 빠른 초기 로딩을 제공합니다.

Styling

Tailwind CSS – 모바일에서도 작동하는 깔끔하고 반응형 UI를 제공합니다.

Core Engine (The Heavy Lifting)

  • WebAssembly (Wasm): 브라우저에서 거의 네이티브 수준의 속도로 무거운 이미지·PDF 처리 로직을 실행합니다.
  • Libraries:
    • pdf-lib – PDF 조작
    • pdf.js – PDF 렌더링
    • tesseract.js – 클라이언트‑사이드 OCR

Architecture: Zero‑Server Processing

PDFCraft에서 가장 흥미로운 부분은 없는 것입니다: 파일 처리를 위한 백엔드 API.

Traditional:
User Uploads File → Server (AWS/GCP) Processes it → User Downloads

PDFCraft:
User Selects File → Browser (Wasm/WebWorkers) Processes it → User Downloads

Why this matters for devs

  • 프라이버시: 서버가 파일을 전혀 보지 않으며, 해킹당할 데이터베이스가 없습니다.
  • 비용: 정적 파일만 호스팅하면 되므로 비용이 저렴합니다.
  • 속도: 대용량 파일을 업로드하는 네트워크 지연이 없습니다.

Key Features Implemented

PDFCraft는 단순한 병합기에서 시작해 80개 이상의 도구를 갖춘 스위트로 성장했습니다. 주요 기능은 다음과 같습니다:

  • 클라이언트‑사이드 OCR: tesseract.js와 Web Workers를 이용해 스캔된 PDF에서 텍스트를 추출하며 메인 스레드를 차단하지 않습니다.
  • 변환: PDF를 Office 형식(Word/Excel) 및 이미지(JPG/PNG/HEIC)로 브라우저 내에서 직접 변환합니다.
  • 보안: AES 암호화·복호화를 순수 클라이언트에서 처리합니다.

Self‑Hosting & Extension

프라이버시가 최우선이므로 직접 실행할 수 있습니다:

  • 레포를 클론하고 어디든 배포하세요(Vercel, Netlify, 혹은 자체 Docker 컨테이너).
  • Chrome 확장 프로그램(레포에 zip 포함)은 새 탭을 열지 않고도 빠르게 접근할 수 있게 해줍니다.

Open Source & Roadmap

이 프로젝트는 MIT 라이선스 하에 완전 오픈 소스입니다. 다음 작업을 도와줄 기여자를 찾고 있습니다:

  • 500 MB 이상 대용량 파일에 대한 PDF 뷰어 성능 개선
  • OCR을 위한 추가 언어 지원 확대

WebAssembly나 PDF 조작에 관심이 있다면 코드를 확인해 보세요!

GitHub:

Back to Blog

관련 글

더 보기 »