Muhammad Arslan
고용하기
프로젝트로 돌아가기

PDF Toolkit

파일이 사용자의 기기를 절대 벗어나지 않는 브라우저 기반의 PDF 병합, 분할, 구성, 변환 및 압축 제품군입니다.

역할: Solo full-stack development일정: 2025유형: Web app / product

Next.js 16

React 19

Tailwind CSS 4

pdf-lib

PDF.js

Ghostscript (WASM)

dnd-kit

JSZip

가상 프로젝트 문서 3페이지가 포함된 PDF Toolkit 정리기

개요

PDF Toolkit은 iLovePDF 같은 도구에 대한 클라이언트 측 대안입니다. 파일 병합, 페이지 추출, 재정렬 및 회전, 이미지 변환, 압축 등 사용자들이 자주 찾는 일상적인 PDF 작업을 모두 브라우저 내에서 직접 처리합니다. 어떤 파일도 서버에 업로드되지 않습니다. 마케팅 사이트와 도구 카탈로그는 각각 독립적인 도구로 구성된 실제 작업 공간들로 연결됩니다.

문제점

기존의 대중적인 온라인 PDF 도구들은 모두 같은 방식으로 작동합니다. 문서를 서버에 업로드하고, 서버에서 처리한 뒤 결과를 다운로드하는 식입니다. 단순한 이미지 변환이라면 괜찮지만, 서명된 계약서, 신분증 스캔본, 의료 서식, 금융 거래 내역서 같은 민감한 문서를 제3자에게 넘기며 그들의 데이터 보관 정책을 신뢰해야 한다는 뜻이기도 합니다. 사용자의 로컬 기기에서 모든 파일을 안전하게 보관하면서도 동일한 작업을 수행하는 도구에 대한 시장의 요구가 분명히 존재했습니다.

내 역할 및 접근 방식

마케팅 사이트, 도구 카탈로그, 그리고 실제 구동되는 모든 도구에 이르기까지 제품 전체를 직접 구축했습니다. 아키텍처의 핵심 결정은 모든 실질적인 PDF 작업을 브라우저에서 직접 수행하는 것이었습니다. 클라이언트 측 처리를 채택함으로써 서버 운영 부담과 파일별 처리 비용을 없앴고, 사용자의 파일이 외부로 절대 전송되지 않는다는 명확한 프라이버시 보장을 제공할 수 있었습니다.

기술 스택

프레임워크Next.js 16 (App Router) with React 19
PDF 편집pdf-lib for structural operations (merge, split, page manipulation)
PDF 렌더링PDF.js (pdfjs-dist) for previews and thumbnails
압축Ghostscript compiled to WebAssembly, which runs entirely in the browser
인터랙션dnd-kit for drag-and-drop page and file ordering; JSZip for bulk image downloads
스타일링Tailwind CSS 4 with a shadcn-inspired component set
분석PostHog

주요 기능

PDF 병합여러 파일을 결합하고 드래그하여 순서를 바꾼 뒤 하나의 문서로 내보내기.
PDF 분할지정한 페이지 범위(예: 1-2, 5)를 새 파일로 추출.
PDF 구성내보내기 전 페이지 순서 변경, 회전, 삭제.
이미지를 PDF로 변환드래그 앤 드롭 순서 제어로 JPG 및 PNG 파일을 PDF로 변환.
PDF를 이미지로 변환썸네일 미리보기 및 ZIP 다운로드를 지원하는 페이지의 이미지 렌더링.
PDF 뷰어PDF.js 기반의 확대/축소 및 페이지 탐색 기능이 탑재된 내장 뷰어.
PDF 압축브라우저 내 Ghostscript를 활용한 파일 크기 축소.
검색 최적화 구축사이트맵, robots 파일 및 AI 크롤러용 llm.txt를 갖춘 표준 마케팅 사이트.

갤러리

가상 프로젝트 브리프, 시스템 맵, 릴리스 체크리스트가 포함된 PDF Toolkit 페이지 정리기
샘플 PDF 페이지에 대한 90도 내보내기 설정을 보여주는 PDF Toolkit 정리기

도전 과제 및 해결 방안

'무서버(no server)' 방식의 난관은 보통 서버가 수행하던 모든 작업을 브라우저가 직접 처리해야 한다는 점이었습니다. 저는 작업을 두 개의 엔진으로 분리했습니다. 문서의 내부 구조를 재작성하는 구조적 편집 작업은 pdf-lib으로 처리하고, 페이지 표시나 이미지 변환이 필요한 렌더링 작업은 PDF.js를 통해 처리하도록 했습니다.

가장 까다로운 문제는 압축이었습니다. 실제 수준의 PDF 압축은 대개 서버 환경에서 실행되는 고성능 네이티브 도구인 Ghostscript에 의존합니다. 프라이버시 보호 약속을 지키기 위해, 저는 WebAssembly 버전의 Ghostscript를 도입하여 해당 엔진이 브라우저 로컬에서 직접 구동되도록 했습니다. 완벽한 압축 기능을 제공하면서도 어떤 파일도 외부로 업로드되지 않습니다. 페이지와 파일의 재정렬이 부드럽고 자연스럽게 느껴지도록 dnd-kit을 사용해 매끄러운 드래그 앤 드롭을 구현했고, 여러 장의 이미지 내보내기 시 수십 개의 파일이 개별 다운로드되지 않도록 JSZip을 사용해 단일 ZIP 파일로 압축 제공했습니다.

결과

그 결과, 백엔드도, 파일 스토리지도, 정적 전송 비용 외의 호스팅 비용도 전혀 들지 않고 실행되는 완전한 iLovePDF 스타일의 툴킷이 탄생했습니다. 동시에 기존 업체들이 제공하지 못하는 강력한 보장, 즉 문서가 기기를 전혀 벗어나지 않는다는 확실한 보안성을 제공합니다. 진정으로 유용한 도구이며, 최신 브라우저가 얼마나 복잡하고 무거운 작업을 훌륭히 처리할 수 있는지를 명확히 보여줍니다.

유사한 프로덕트 문제가 있으신가요?

현재 프로덕트 현황, 필요한 결과, 직면한 제약 사항을 공유해 주세요. 이를 바탕으로 합리적인 첫 번째 마일스톤을 정의해 드립니다.

웹 애플리케이션 개발 서비스
프로젝트 브리프 시작하기
전체 프로젝트다음 프로젝트VCM
PDF Toolkit: 업로드 없는 프라이버시 최우선 브라우저 PDF 도구 | Muhammad Arslan