나는 브라우저에서 완전히 실행되는 프라이버시 우선 PDF 다크 모드 변환기를 만들었습니다
발행: (2026년 4월 25일 PM 05:58 GMT+9)
4 분 소요
원문: Dev.to
Source: Dev.to
TL;DR
pdfdark.org 를 출시했습니다 – 브라우저‑측 PDF 다크‑모드 변환기. 파일이 브라우저를 떠나지 않으며, 전체 변환이 PDF.js, Web Worker, 그리고 pdf‑lib 를 사용해 클라이언트‑측에서 이루어집니다. 오픈 소스(MIT), 무료이며 회원가입이 필요 없습니다.
왜 만들었나요
밤에 긴 PDF를 읽다 보니 눈이 피로해졌습니다. 기존 솔루션에는 큰 단점이 있었습니다:
- 웹 기반 다크‑모드 도구 – 파일을 업로드해야 해서 연구 논문, 계약서, 의료 기록 등 민감한 문서에 안전하지 않다고 느꼈습니다.
- OS 수준 “색상 반전” – 사진과 차트를 망가뜨려 얼굴을 X‑레이처럼 만들고 그래프를 잡음으로 바꿔 버립니다.
핵심 원칙
- 데이터가 브라우저를 떠나지 않음 – PDF.js 가 파일을 파싱하고, Web Worker 가 다크‑모드 패스를 적용하며, pdf‑lib 가 결과를 결합합니다. DevTools → Network 에서 과정을 확인할 수 있습니다.
- 이미지 색상 보존 – 채도 분류기가 사진과 도표를 감지해 텍스트와 UI 요소만 어둡게 하고, 이미지는 그대로 둡니다.
작동 방식
Drop PDF
↓
PDF.js renders pages to canvas
↓
Web Worker classifies each pixel by saturation
├─ Saturated pixels (images, charts) → preserved
└─ Low‑saturation pixels (text, UI) → themed
↓
pdf‑lib assembles a new PDF
↓
User downloads the result
- 분류기는 OffscreenCanvas 를 사용해 Web Worker 내부에서 실행되므로, 큰 PDF에서도 UI 스레드가 응답성을 유지합니다.
- 출력은 실제 PDF(이미지 기반, 페이지당 하나의 JPEG)이며, 다크 모드가 이메일 전송, iPad 동기화, Kindle 열기 등에서도 유지됩니다. 단순히 뷰어 토글이 아닙니다.
비용
| Item | Cost |
|---|---|
| Domain (Cloudflare .org) | $7.50 |
| Hosting (Vercel free tier) | $0 |
| Email forwarding (Cloudflare) | $0 |
| Error monitoring (Sentry free tier) | $0 |
| Total | $7.50 |
개발은 몇 주말에 걸쳐 진행되었습니다.
남은 질문
- “업로드 없음” 접근 방식이 프라이버시 애호가 외에도 공감을 얻을 수 있을까?
- 알고리즘을 깨뜨리는 엣지 케이스(예: 특이한 내장 폰트, 스캔된 PDF)를 어떻게 처리할까.
- 텍스트‑전용 PDF에 대해 벡터 보존 모드를 추가할지 여부(현재 출력은 이미지 기반이라 텍스트를 선택할 수 없음).
링크
- Live site:
- GitHub repository:
- Privacy policy: