PDF를 단일 HTML 플립북(페이지 넘김 애니메이션 뷰어)으로 변환하는 Windows용 도구
WebBook3는 PDF의 모든 페이지를 이미지로 렌더링한 뒤 base64로 HTML에 인라인하여, 서버 없이 어디서나 더블클릭만으로 열리는 단독 실행형 .html 파일 하나를 만듭니다. page-flip 라이브러리도 CDN이 아닌 로컬 자산으로 번들되어 완전 오프라인으로 동작합니다.
핵심 엔진은 PyMuPDF(fitz)이며, 두 개의 패키지로 구성됩니다.
| 패키지 | 역할 |
|---|---|
webbook3 |
변환 엔진. CLI · Flask 웹 UI · 폴더 감시 3가지 진입점 제공 |
webprt |
Windows 가상 프린터. 어떤 앱에서든 "WebPRT" 프린터로 인쇄하면 웹북 자동 생성 |
- 📄 PDF → 단일 HTML 플립북 변환 (서버 불필요, 단독 실행)
- 📖 단면 / 양면(스프레드) 보기 전환, 전체화면, 키보드 이동
- ✂️ PDF TrimBox 기준 자동 크롭(재단선 제거)
- 🎨 래스터(WebP/JPEG) 또는 SVG 렌더링, 배경 스타일 선택
- 🖨️ WebPRT 가상 프린터 — 모든 앱의 인쇄 기능으로 웹북 생성
- 🌐 완전 오프라인 동작 (page-flip 자산 로컬 번들)
일상 작업은 통합 런처 WebBook3.bat 하나로 수렴합니다. 더블클릭 후 메뉴 번호를 선택하세요.
WebBook3.bat → [1] 설치 → [2] 웹 UI 실행
💡 PDF 파일을
WebBook3.bat위로 끌어다 놓으면 메뉴 없이 즉시 변환됩니다.
| 번호 | 기능 | 동작 |
|---|---|---|
1 |
설치 | .venv 생성 → requirements.txt 설치 → output/uploads/watch 폴더 생성 |
2 |
웹 UI 실행 | http://127.0.0.1:4713/ 서버 + 브라우저 자동 열기 |
3 |
감시 폴더 모드 | watch 폴더의 PDF를 감지해 같은 폴더에 HTML 생성 |
4 |
PDF 변환 | 입력 PDF를 output\<이름>_webbook3.html 로 변환 |
5 |
WebPRT 시작 | 가상 프린터 서비스 시작 (트레이 아이콘 생성) |
6 |
WebPRT 중지 | 실행 중인 WebPRT 서비스 종료 |
7 |
웹 서버 종료 | 4713 포트 프로세스 종료 |
8 |
환경 점검 | Python · .venv · 패키지 · 프린터 등록 상태 확인 |
9 |
프린터 등록/제거 | webprt\install.ps1 / uninstall.ps1 을 관리자 권한으로 실행 |
0 |
종료 | 런처 종료 |
| 항목 | 최소 | 권장 |
|---|---|---|
| 운영체제 | Windows 10 (1909+) | Windows 11 |
| Python | 3.8 | 3.11+ |
| RAM | 2 GB | 4 GB 이상 |
| 디스크 | 500 MB | 1 GB 이상 |
| 상황 | 사용할 파일 |
|---|---|
| 소스코드 직접 설치 (인터넷 O) | WebBook3.bat → [1] |
| 빌드된 설치 마법사 (가장 쉬움) | dist\installer\WebPRT_Setup_1.0.0.exe |
| 포터블 (설치 없이 USB 실행) | Make_Portable.bat → 생성된 ZIP 압축 해제 |
| 오프라인 설치 (인터넷 X) | Setup_Offline.bat (아래 참고) |
| IT 무인 설치 | Install_Silent.bat (빌드된 exe 필요) |
# WebBook3.bat → [1] 이 자동 실행하는 명령
py -3 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt가상 프린터까지 쓰려면 이어서 [9] → [1] 로 프린터를 등록(관리자 권한)한 뒤 [5] 로 서비스를 시작합니다.
준비 — 인터넷 있는 PC에서 1회 실행:
Download_Offline_Packages.bat
- Python 3.11 설치 파일(~28 MB) →
offline\python_installer\ - 필요한 Python 패키지 전체(~120 MB) →
offline\packages\
완료 후 프로젝트 폴더 전체를 USB/공유폴더로 대상 PC에 복사합니다.
설치 — 인터넷 없는 PC에서 실행:
Setup_Offline.bat
Python 설치 → 가상환경 생성 → 패키지 설치 → 프린터 등록 → 시작 프로그램 등록(선택)까지 마법사가 자동 처리합니다.
# 기본 변환 → output\sample_webbook3.html
.venv\Scripts\python.exe -m webbook3 "C:\path\to\sample.pdf"
# 출력 경로·옵션 지정
.venv\Scripts\python.exe -m webbook3 "input.pdf" -o "output\out.html" --view double --render-mode raster --bg-style grey30
# 단면 보기 / 재단선 크롭 끄기
.venv\Scripts\python.exe -m webbook3 "input.pdf" --view single --no-crop-marks| 옵션 | 설명 |
|---|---|
-o <path> |
출력 HTML 경로 |
--view single | double |
단면 / 양면(스프레드) 보기 |
--render-mode raster | svg |
렌더링 방식 (Pillow 없으면 JPEG 폴백) |
--bg-style <style> |
배경 스타일 (예: grey30) |
--no-crop-marks |
TrimBox 자동 크롭 비활성화 |
.venv\Scripts\python.exe -m webbook3.webapp브라우저에서 http://127.0.0.1:4713 접속 → PDF 업로드 1개 → 보기/렌더링/배경/크롭 선택 → 생성 결과 열기·다운로드. 종료는 런처 [7].
.venv\Scripts\python.exe -m webbook3.watcherwatch/ 폴더에 PDF를 넣으면 자동 감지하여 같은 폴더에 HTML을 생성합니다. 파일 크기·수정 시각이 안정되면(복사/저장 완료) 처리를 시작합니다.
어떤 앱(Word, 브라우저, PDF 뷰어 등)에서든 인쇄 시 "WebPRT" 프린터를 선택하면, 페이지 넘김 애니메이션이 있는 단독 HTML 웹북이 자동 생성됩니다.
앱 인쇄 → "WebPRT" 프린터 → Microsoft XPS Document Writer v4 드라이버
→ %APPDATA%\WebPRT\spool\webprt_current.xps
→ SpoolWatcher 폴링 감지 → FlipbookGenerator → HTML
→ 출력 폴더(기본 Desktop\WebPRT)에 저장 + 브라우저 자동 오픈
- 외부 도구 불필요 (Ghostscript·별도 드라이버 없음), Windows 10/11 기본 XPS 드라이버 사용
- PyMuPDF가 PDF와 XPS를 동일하게 처리 → 변환 엔진 그대로 재사용
WebBook3.bat → [9] → [1] 프린터 등록 (관리자 권한, 최초 1회)
WebBook3.bat → [5] 서비스 시작 (트레이 아이콘 생성)
트레이 모드 의존성이 없으면 헤드리스(콘솔) 모드로 동작합니다.
.venv\Scripts\python.exe -m webprt # 트레이 모드
.venv\Scripts\python.exe -m webprt --headless # 콘솔 모드
.venv\Scripts\python.exe -m webprt --install # Windows 시작 시 자동 실행 등록
.venv\Scripts\python.exe -m webprt --uninstall # 자동 실행 제거- 아무 앱에서 파일 → 인쇄
- 프린터 목록에서 WebPRT 선택 → 인쇄
- 잠시 후 HTML 웹북이 브라우저에서 자동으로 열림
- 생성 파일은 기본적으로
%USERPROFILE%\Desktop\WebPRT\에 저장
설정 파일: %APPDATA%\WebPRT\config.json (트레이 아이콘 우클릭 → 설정 파일 편집)
| 항목 | 기본값 | 설명 |
|---|---|---|
output_dir |
Desktop\WebPRT |
HTML 저장 경로 (구버전 Documents\WebPRT는 자동 마이그레이션) |
auto_open |
true |
생성 후 브라우저 자동 오픈 |
dpi |
96 |
렌더링 해상도 |
spread_view |
true |
양면 보기 (false = 단면) |
render_mode |
"raster" |
"raster" 또는 "svg" |
bg_style |
"grey30" |
배경 스타일 |
crop_marks |
true |
재단선 크롭 여부 |
WebBook3/
webbook3/ ← 웹북 변환 엔진
__main__.py CLI 진입점
generator.py FlipbookGenerator (모든 변환이 수렴하는 핵심)
watcher.py 폴더 감시
webapp.py Flask 웹 UI
templates/index.html
assets/page-flip.browser.min.js (로컬 번들)
webprt/ ← WebPRT 가상 프린터 서비스
__main__.py
config.py %APPDATA%\WebPRT\config.json 관리
processor.py 인쇄 작업 처리
spool.py SpoolWatcher (스풀 파일 감시)
xps_converter.py OpenXPS → fitz/WPF 변환
tray.py pystray 트레이 UI
install.ps1 / uninstall.ps1
build/ ← PyInstaller + Inno Setup 빌드 스크립트
offline/ ← 오프라인 설치 패키지
requirements.txt
build\build.bat # PyInstaller + Inno Setup (15~30분), Inno Setup 필요
Make_Portable.bat # 포터블 ZIP 생성
산출물: dist\installer\WebPRT_Setup_1.0.0.exe, dist\portable\WebPRT_Portable_1.0.0.zip
"Microsoft XPS Document Writer v4" 드라이버를 찾을 수 없음
Windows 설정 → 앱 → 선택적 기능 → "XPS 뷰어" 설치 후 재시도. 또는 PowerShell(관리자):
Enable-WindowsOptionalFeature -Online -FeatureName Printing-XPSServices-Features인쇄해도 아무 반응 없음
- WebPRT 서비스 실행 여부 확인 (
WebBook3.bat→[5], 트레이 아이콘) %APPDATA%\WebPRT\spool\에.xps파일이 생기는지 확인- 방화벽/백신이
python.exe를 차단하지 않는지 확인 WebBook3.bat→[8]환경 점검
pystray 설치 오류 / 트레이 아이콘 없음
트레이가 필요 없으면 무시해도 됩니다. 콘솔에서 Ctrl+C 로 종료하는 헤드리스 모드로 동작합니다. 수동 설치: .venv\Scripts\pip install pystray
Python을 찾을 수 없음
python --version 으로 설치 확인. 설치 시 "Add Python to PATH" 체크 여부를 확인하고, 누락 시 재설치하거나 PATH에 수동 추가하세요.
- 모든 페이지를 base64로 HTML에 인라인하는 의도된 설계입니다. PDF가 매우 크면 출력 HTML과 브라우저 메모리 사용량이 커지고 생성 시간이 늘어날 수 있습니다.
MIT License © 2026 애플아저씨. 자유롭게 사용·수정·배포할 수 있습니다.