Use this command to install LocalPDF Studio with WinGet:
winget install --id=jeiel85.LocalPDFStudio -e
LocalPDF Studio is a local-first desktop PDF viewer and utility suite built with Tauri.
Features include PDF viewing, merging, splitting, encryption, OCR (via Tesseract),
page editing (reorder/delete/rotate/insert), watermarking, metadata editing,
form filling, searchable PDF generation, and side-by-side comparison.
All processing is performed locally — no cloud uploads.
README
LocalPDF Studio
LocalPDF Studio는 광고·계정·클라우드 업로드 없이 PDF를 다루는 로컬 우선 데스크톱 앱입니다.
모든 파일 처리는 사용자의 PC 안에서 일어나며, Tauri 2 + React 19 + Rust로 만들었습니다.
Cross-platform: Windows · macOS (Apple Silicon + Intel) · Linux. 자세한 설치 방법은 INSTALL.md를 참고하세요.
brew tap jeiel85/tap && brew install --cask localpdf-studio
v0.18.0 Cask 반영 완료, tap 게시 대기
> macOS 빌드는 현재 Apple Developer 서명/공증이 없습니다 ($99/년 비용 부담). 첫 실행 시 Gatekeeper 우회가 필요합니다 — 절차는 INSTALL.md#macOS 참고. 사용자가 의미 있게 늘면 서명 도입 검토 예정.
✨ 핵심 방향
로컬 우선 — PDF 내용은 외부 서버로 전송하지 않습니다.
Cross-platform — Windows / macOS / Linux 단일 코드베이스 (Tauri 2 + React).
빠른 데스크톱 UI — ~15MB 설치 크기, 메인 JS 번들 117KB.
완성된 PDF 워크플로 — 뷰어부터 OCR · 폼 채우기 · 분할 비교까지 한 앱에서.
다국어 — 한국어 · 영어 · 일본어 (브라우저 언어 자동 감지).
배포 자동화 — 태그 기반 Windows 릴리즈 빌드, GitHub Release, Tauri updater manifest 자동 생성.
🚀 기능 (v0.17.0)
📖 PDF 뷰어
PDF.js 기반 고성능 렌더링 — 단일 페이지 / 연속 스크롤
페이지 맞춤 3종 (너비 / 페이지 / 실제 크기) + 확대 · 회전 · 텍스트 선택
대용량 PDF (250MB+) 스트리밍 로드 (pdf-local:// 커스텀 프로토콜 + HTTP Range)
렌더 큐로 메인 스레드 보호, 가시 영역 외 페이지 자동 메모리 해제
페이지 썸네일 / 목차 / 전문 검색 (캔버스 하이라이트) / 최근 문서
다중 문서 탭 + 세션 복원 (페이지/배율/회전/레이아웃 모두 복원)
파일 드래그앤드롭 · Windows 우클릭 메뉴
🖊️ PDF Fill & Sign (v0.17.0 New!)
자유 스탬프 도구 — PDF 위 어디에든 텍스트, ✓, ✕, ●, 날짜를 드래그/클릭만으로 배치, 모서리 핸들로 자유 리사이즈, 더블 클릭 없이 즉시 이동.
두 가지 서명 방식 — 마우스/스타일러스로 직접 그리는 캔버스 서명, 또는 이미지(PNG/JPG) 파일에서 가져온 서명을 흰 배경 자동 투명화로 처리해 임포트.
서명 라이브러리 — 그린 서명과 가져온 서명을 localStorage에 영속 저장해 여러 PDF에 재사용. 즉시 미리보기 카드로 정렬.
AcroForm 폼 평탄화 (Flatten) — 폼 채우기 후 필드를 평탄화해 편집 불가능한 정적 PDF로 고정. Fill & Sign 저장 시에도 함께 평탄화 가능.
회전 대응 좌표계 — 0°/90°/180°/270° 회전과 모든 줌 배율에서도 unrotated PDF Point 기준으로 정확한 위치 유지.
✒️ 주석 및 보안 마스킹 (v0.15.0)
개인정보 자동 탐지 및 마스킹 추천 — 주민등록번호, 휴대전화번호, 이메일, 신용카드 번호, 계좌번호, 사업자등록번호, 여권번호, 운전면허번호를 PDF 텍스트 레이어에서 100% 로컬로 스캔하고 추천 마스킹 영역으로 변환
정밀 부분 문자열 좌표 환산: PDF.js TextItem의 transform/width 정보를 바탕으로 개인정보가 문장 일부에만 포함된 경우에도 문자 비례 너비(charWidth)로 밀착 좌표를 산출.
분산 텍스트 통합 탐지: 이메일처럼 여러 TextItem에 쪼개진 패턴도 전체 인덱스 매핑으로 이어 붙여 탐지하고, 페이지별 RedactionArea로 병합.
프라이버시 보호 결과 UI: 탐지 결과는 * 마스킹 표시와 유형별 배지로 보여주며, 전체/개별 선택 후 기존 블랙아웃 마스킹 목록에 추가. 스캔 이미지 PDF는 OCR → 검색 가능 PDF 안내를 제공.
적용 전 안전 확인 및 되돌리기: 래스터/벡터 마스킹의 보안 차이를 적용 직전에 고지하고, 자동 탐지로 방금 추가한 영역은 즉시 되돌릴 수 있음.
개인정보 보안 마스킹 (블랙아웃) — 100% 오프라인 로컬 처리
영구 래스터화 마스킹 (Secure Rasterization): 대상 페이지를 300DPI 고해상도로 렌더링하고 마스킹 영역을 검은색으로 완전히 칠한 뒤 신규 이미지 페이지로 원자적 교체 (insertPage & removePage 전략). 기존의 원본 텍스트 레이어, 벡터 그래픽스 및 메타데이터를 영구 파괴하여 백그라운드 드래그나 데이터 마이닝을 통한 개인정보 유출을 원천 방지!
일반 벡터 마스킹: pdf-lib drawRectangle API를 활용하여 검은색 사각형 영역을 PDF 위에 빠르게 덧그림.
정교한 화면 변환 UI: 확대/축소 및 페이지 회전(0/90/180/270도) 상태에 완벽 대응하여 흔들림 없이 밀착 고정되는 드래그 영역 지정 박스 및 삭제 호버 애니메이션 버튼.
간섭 방지: 드래그 마스킹 모드 진입 시 브라우저 텍스트 선택 기능과의 충돌을 억제하기 위해 .textLayer와 .annotationLayer 선택을 원천 차단.
다중 페이지 텍스트 선택 하이라이트 — 국제 표준 Highlight Annotation 연동
PDF.js 텍스트 레이어와 window.getSelection()을 유기적으로 연동하여 자연스럽게 여러 페이지를 넘나드는 다중 줄 하이라이트 지정.
pdf-lib 저수준 API를 사용하여 각 페이지의 /Annots 딕셔너리에 표준 Highlight Annotation 객체를 임베딩함으로써, Adobe Acrobat, Chrome 내장 뷰어, macOS Preview 등 타 리더기 주석 패널과의 완벽한 양방향 호환성 확보.
0°, 90°, 180°, 270° 모든 회전 각도를 수학적으로 연산하는 역변환 보정 공식을 적용하여 완벽하게 정렬된 하이라이트 렌더링 제공.
🛠️ PDF 작업 엔진 (qpdf 기반)
병합 / 분할 (페이지 단위 개별 파일)
페이지 추출 (범위 지정: 1-5, 7, 10-12)
페이지 회전 — 전체/범위 또는 페이지 편집기에서 인라인 회전
페이지 재정렬 / 삭제 / 다른 PDF 삽입 (드래그앤드롭 편집기)
암호 설정/해제 (256-bit AES, --password-file로 CLI 노출 방지)
압축 / PDF 정규화 (linearize + object stream)
메타데이터 읽기 + 편집 (Title/Author/Subject/Keywords)
🔍 OCR / 변환 / 고급 기능
Tesseract OCR — 언어 선택, DPI 설정, 텍스트 추출
검색 가능 PDF 생성 — 스캔 PDF를 텍스트 레이어 합성된 PDF로 변환
이미지 OCR — PNG / JPG / WEBP / BMP / TIFF에서 텍스트 추출
PDF → 이미지 (PNG / JPEG / WebP), PDF → TXT, 이미지 → PDF