나는 브라우저에서 완전히 실행되는 프라이버시 우선 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‑레이처럼 만들고 그래프를 잡음으로 바꿔 버립니다.

핵심 원칙

  1. 데이터가 브라우저를 떠나지 않음 – PDF.js 가 파일을 파싱하고, Web Worker 가 다크‑모드 패스를 적용하며, pdf‑lib 가 결과를 결합합니다. DevTools → Network 에서 과정을 확인할 수 있습니다.
  2. 이미지 색상 보존 – 채도 분류기가 사진과 도표를 감지해 텍스트와 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 열기 등에서도 유지됩니다. 단순히 뷰어 토글이 아닙니다.

비용

ItemCost
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:
0 조회
Back to Blog

관련 글

더 보기 »

내가 마침내 봇에게 '지루한' 일을 맡긴 방법

Google Cloud NEXT ’26에 대한 나의 견해: 우리 모두를 위한 “Agentic” 시대 NEXT ’26에 참석한 모든 사람들은 “Agents”에 대해 이야기하고 있습니다. 이것이 공상과학 용어처럼 들린다면, …

Netflix 가구 인증 우회

개요: 나는 Netflix의 household verification을 우회하는 browser extension을 만들었습니다. UI를 수정하는 대신, 이 extension은 Netflix의 API 응답을 가로챕니다.