Статический веб-сайт для GitHub Pages: режим докладчика для PDF-презентаций, аналогичный PowerPoint.
Демо: https://shureck.github.io/pdf_pres/
- Загрузка PDF локально (файл не отправляется на сервер)
- Режим докладчика на основном экране: текущий слайд, предпросмотр следующего, таймер, счётчик слайдов
- Экран зрителей на втором мониторе: полноэкранный показ текущего слайда
- Синхронизация окон через BroadcastChannel
- Навигация клавишами:
←→SpaceHomeEnd
- Откройте сайт в Chrome или Edge (рекомендуется)
- Подключите второй монитор или проектор
- Перетащите PDF-файл или выберите через кнопку
- Нажмите «Начать презентацию»
- На основном экране откроется панель докладчика
- На втором экране — окно для зрителей (нажмите для полноэкранного режима)
- Переключайте слайды стрелками или кнопками на панели докладчика
| Клавиша | Действие |
|---|---|
→ / Space / PageDown |
Следующий слайд |
← / PageUp |
Предыдущий слайд |
Home |
Первый слайд |
End |
Последний слайд |
Сайт развёрнут на GitHub Pages из ветки main (корень репозитория).
URL: https://shureck.github.io/pdf_pres/
Для форка или своего репозитория:
- Загрузите файлы в репозиторий
- Settings → Pages → Source: ветка
main, папка/ (root) - Сайт будет доступен по адресу
https://<username>.github.io/<repo>/
Файл .nojekyll уже включён — GitHub Pages корректно отдаст все файлы.
- PDF загружается только локально — данные хранятся в IndexedDB браузера
- Заметки докладчика из PDF не поддерживаются (в отличие от PPTX)
- Window Management API (автоматическое размещение на втором мониторе) работает в Chrome/Edge; в Firefox и Safari окно нужно перетащить вручную
- Для открытия окна зрителей может потребоваться разрешить всплывающие окна
- Полноэкранный режим на экране зрителей требует клика пользователя (ограничение браузера)
- Рекомендуется использовать HTTPS (GitHub Pages предоставляет его автоматически)
presenter_mode/
├── index.html # Загрузка PDF
├── presenter.html # Режим докладчика
├── audience.html # Экран зрителей
├── css/styles.css
├── js/
│ ├── storage.js # IndexedDB
│ ├── pdf-service.js # PDF.js рендер
│ ├── sync.js # BroadcastChannel
│ ├── timer.js # Таймер
│ ├── screen-manager.js
│ ├── presenter.js
│ └── audience.js
└── .nojekyll
Для разработки нужен локальный HTTP-сервер (ES-модули не работают через file://):
# Python
python -m http.server 8080
# или npx
npx serve .Откройте http://localhost:8080.
- Vanilla HTML / CSS / JavaScript
- PDF.js (CDN)
- BroadcastChannel, IndexedDB, Window Management API