Управление презентациями и медиаконтентом на нескольких экранах без суеты в эфире
Оператор видит библиотеку, каналы и управление — зрители видят только готовый контент.
- Живая копия внешнего источника теперь получает камеру, плату видеозахвата, окно или экран напрямую: изображение не чернеет, звук не дублируется, а титры и наложенный таймер сохраняются поверх копии.
- После временного переключения входа дополнительного монитора его роль и назначение сохраняются; при возвращении того же дисплея PDM автоматически открывает нужное окно и восстанавливает живую копию.
- Титры внешнего источника синхронизируются во всех каналах, основном эфире и информационных экранах, где выбран один и тот же источник. Показ титра из карточки канала больше не переключает канал и не запускает TAKE.
- На информационном экране титры можно выбрать прямо из его предварительного просмотра. Исправлены скрытые под окном «Экраны» диалоги выбора внешнего устройства, окна и экрана.
- Обнаружение мониторов защищено от кратковременных неполных снимков топологии Windows, а системная панель задач ноутбука больше не скрывается из-за устаревших координат отключённого дисплея.
- Живая копия удерживает последний готовый кадр до первого реально отрисованного кадра нового источника и автоматически повторяет подключение после временного отказа видеопотока.
Presentation Display Manager — Windows-приложение для конференций, докладов, трансляций и мероприятий с несколькими экранами. Главное окно остаётся у оператора, основной контент выводится зрителям, а отдельные дисплеи при необходимости работают как суфлёр докладчика и информационное табло.
Основной монитор — интерфейс оператора
Любой дополнительный монитор — эфир, копия эфира, суфлёр,
информационный экран, простой таймер, таймер мероприятия или выключен
Один режим можно назначить нескольким мониторам: например, вывести эфир на два экрана или открыть одинаковый суфлёр для двух спикеров.
Приложение рассчитано на быстрые переключения: следующий материал можно подготовить в отдельном канале, не меняя текущую картинку в эфире.
- Переключаемая сетка каналов — раскладка 4 (2×2) для крупных превью или 9 (3×3) для одновременной работы с девятью каналами без прокрутки; дополнительные страницы позволяют заранее разложить ещё больше контента.
- Автоматическое заполнение каналов — кнопка
123...->раскладывает все поддерживаемые материалы из открытой папки по номеру в начале имени:3.pdf,03-Ролик.mp4,4. Презентация.pptxи другие варианты. Недостающие страницы создаются автоматически, а файлы без номера остаются в библиотеке. - Подписи каналов — карандаш в карточке позволяет подписать канал именем доклада, спикера или блока программы; подпись сохраняется независимо от замены материала и входит в конфигурацию.
- Сохранение конфигурации мероприятия — один файл
.pdmconfigсохраняет материалы и подписи каналов, переходы после видео, номера слайдов, раскладку, назначения и имена дисплеев, подложку, информационный экран, плейлисты, позиции видео, оба таймера, кликер и аудиовыход. - Аварийное восстановление рабочей сессии — при падении PDM подготовленные каналы, подписи, источники, выбранные слайды, сетка и текущая страница возвращаются на следующем запуске без автоматического выхода в эфир. При обычном закрытии, подтверждённом оператором, подготовленные каналы очищаются. Если после сбоя отдельный файл удалён или переименован, очищается только связанный с ним канал.
- Автопереход между презентациями — по желанию клик «вперёд» на последнем слайде PPTX/PDF открывает ближайший следующий непустой канал, а клик «назад» на первом слайде — предыдущий. Пустые каналы пропускаются, функция при каждом запуске выключена.
- Бесшовное переключение эфира — PDF, PowerPoint, видео и внешние источники сменяют друг друга без чёрного кадра, рабочего стола и мерцания; предыдущий кадр остаётся видимым до полной готовности следующего.
- PowerPoint — превью всех слайдов, переход к нужному слайду, next/prev и нативное слайд-шоу через Microsoft PowerPoint. Сразу после добавления PPTX в канал PDM скрыто открывает её в PowerPoint, готовит превью и полноразмерные кадры. Редактор PowerPoint скрывается до первого эфирного кадра и не вспыхивает на операторском экране. Пока видна метка «Кэширование…», кнопка выхода в эфир недоступна; после завершения презентация уже загружена и готова к показу. При выходе PDM закрывает только созданные им презентации, а уже открытое пользовательское окно возвращает в исходное состояние.
- PDF и офисные документы — сразу после добавления PDF в канал PDM в фоне готовит полноразмерные страницы под разрешение и DPI выбранного эфирного дисплея. Прогрессивная загрузка миниатюр и комбинированный рендер через Windows.Data.Pdf, PDFium и резервный pdf.js автоматически обходят проблемные страницы. Также доступен предпросмотр Word и Excel через установленный Microsoft Office.
- Видео без потери позиции и переход по окончании — play/pause, stop, seek, громкость, повтор ролика или плейлиста и продолжение с сохранённого момента после переключения между каналами; для каждого видеоканала можно заранее выбрать канал, который автоматически выйдет в эфир после окончания ролика. После выхода в эфир видео ожидает ручного нажатия Play.
- Камеры и платы видеозахвата — добавление веб-камер, USB-камер и HDMI/USB-плат для показа камеры, Apple TV и других внешних источников. Для устройств видеозахвата можно отдельно выбрать связанный аудиовход.
- Окна программ и экраны — автоматический список открытых окон, показ браузера, Word, Excel, Проводника, командной строки или целого экрана. Свёрнутое окно развернётся только после нажатия «В эфир»; браузер при этом автоматически переходит в режим F11 и скрытно возвращается в исходное положение, размер, состояние и монитор при выходе из эфира, не перекрывая операторское окно.
- Курсор при показе окна — когда оператор работает в PDM, курсор не попадает в миниатюру и эфир захваченного окна; при переходе в демонстрируемую программу используется привычный системный курсор Windows. Звук выбранной программы не захватывается.
- Титры внешнего источника — поверх камеры, платы видеозахвата, окна программы или захваченного экрана можно независимо показать титр с ФИО и должностью выступающего, а также дополнительный титр с информацией о мероприятии. Заранее создаётся список из любого количества выступающих; для каждого слоя настраиваются эффекты появления и исчезновения, автоскрытие, а для мероприятия — положение в одной из девяти зон экрана.
- Изображения и подложка — выбранный фон применяется ко всем включённым дополнительным дисплеям. Обычно новая сессия начинается без фона, но его можно явно перенести вместе с сохранённой конфигурацией. На суфлёре фон служит чистой заглушкой, когда в эфире нет PPTX/PDF, и не просвечивает между блоками слайдов.
- Таймер поверх эфира — перетаскивание, масштабирование, прозрачность текста, звуковые сигналы и отдельные цвета для основного времени, последней минуты и перелимита. Положение и размер запоминаются после остановки таймера и перезапуска PDM.
- Таймер мероприятия — отдельное полноэкранное табло с расписанием, названием события, крупным отсчётом, стоимостью минуты, автоматическим расчётом итога, красным перелимитом и собственным фоном. Его панель и состояние не зависят от простого таймера.
- Музыкальный плеер — плейлист, громкость, переход между треками и режимы повтора.
- Универсальные дисплеи — каждому дополнительному монитору независимо назначается эфир, суфлёр, информационный экран, простой таймер, таймер мероприятия или выключенное состояние; одинаковые режимы можно повторять, а каждому физическому экрану можно дать понятное пользовательское имя.
- Живая копия эфира — второй монитор с режимом «Основной эфир» зеркалирует главный выход вместе с PowerPoint-анимациями, видео и бесшовными переходами, но без повторного воспроизведения звука. Во время подготовки нового источника сохраняется последний готовый кадр, а статичный первый слайд PPTX появляется автоматически без дополнительного Next/Prev. PPTX сохраняет исходные пропорции и отдельно вписывается в геометрию каждого монитора: 16:9 заполняет Full HD, а на ультрашироком экране получает корректные боковые поля — без растягивания и обрезки самого слайда. Наложенный таймер повторяется в том же положении и масштабе не только поверх PPTX, но и поверх напрямую отрисованных PDF, видео и изображений.
- Суфлёр докладчика — один или несколько дисплеев следуют за активной PPTX/PDF-презентацией и показывают текущий слайд, следующий слайд, номер и заметки PowerPoint.
- Информационные экраны — независимый синхронный показ PPTX, PDF, видео, изображения, внешнего видеовхода либо выбранного окна/экрана на одном или нескольких мониторах; у видео есть play/pause, stop, переход по времени и зацикливание, а содержимое не меняется при переключении каналов основного эфира.
- Гибкий вывод таймера — обычный таймер выводится на мониторы с режимом «Таймер», а если таких мониторов нет — автоматически накладывается поверх основного эфира. Новый таймер мероприятия назначается отдельно и не меняет это поведение.
- 4K, масштаб Windows и смена разрешения — эфирное окно, PowerPoint, оба таймера и вспомогательные дисплеи используют актуальные физические границы каждого монитора. PDM автоматически перестраивает вывод после изменения разрешения, DPI, масштаба или расположения экранов, сохраняет точную позицию простого таймера между остановкой и повторным запуском и скрывает панель задач именно на нужном дисплее.
- Аудиовыход — выбор устройства с корректным отображением русских названий.
- Кликер — глобальное управление слайдами стрелками и Page Up/Page Down.
- Защита от потери подготовки — обычное закрытие главного окна требует подтверждения, а renderer и вспомогательные процессы контролируются и восстанавливаются без самопроизвольного обнуления каналов.
- Диагностика — постоянный журнал с данными о дисплеях, PowerPoint, экспорте превью и воспроизведении медиа, событиями жизненного цикла и аварийными дампами Chromium/Electron.
| Тип | Форматы |
|---|---|
| Презентации | .pptx, .ppt |
| Документы | .pdf, .doc, .docx, .xls, .xlsx, .txt, .rtf, .odt, .ods |
| Видео | .mp4, .mov, .avi, .webm, .mkv |
| Изображения | .jpg, .jpeg, .png, .gif, .bmp, .webp, .tiff, .tif, .svg |
| Аудио | .mp3, .wav, .ogg, .aac, .m4a, .flac, .wma |
| Внешние источники | камеры и USB/HDMI-платы видеозахвата, окна программ, экраны |
Фактическое воспроизведение конкретного видео- или аудиокодека зависит от поддержки Chromium и Windows, а не только от расширения файла.
- Скачайте актуальный
.exeна странице Releases. - Запустите
Presentation Display Manager Setup x.x.x.exe. - Выберите папку установки и завершите установку.
- Подключите нужные мониторы или проекторы и включите в Windows режим «Расширить».
- Нажмите «🖥 Экраны» и выберите режим отдельно для каждого подключённого монитора.
CI-сборки публикуются без коммерческой цифровой подписи. Поэтому Windows SmartScreen может показать предупреждение «Неизвестный издатель»: нажмите «Подробнее» → «Выполнить в любом случае», если установщик скачан из официального раздела Releases этого репозитория.
- Windows 10/11 x64;
- хотя бы один внешний дисплей или проектор для полноценного эфирного режима; дополнительные мониторы нужны только для суфлёра и информационного экрана;
- Microsoft PowerPoint desktop для показа PPT/PPTX и создания превью слайдов;
- Microsoft Word/Excel desktop для предпросмотра соответствующих документов.
PDF, изображения, видео, музыка и таймер не требуют установленного PowerPoint.
- Выберите папку с материалами в левой панели либо добавьте камеру, плату видеозахвата, окно программы или экран в разделе «Внешние источники».
- Выберите раскладку 4 · 2×2 или 9 · 3×3 и перетащите материал либо внешний источник в нужный канал. Значок кнопки показывает раскладку, на которую переключит следующий клик: 9 точек в режиме 2×2 и 4 квадрата в режиме 3×3. Кнопка
+добавляет ещё одну страницу из 4 или 9 каналов. - При необходимости заранее выберите слайд или поставьте видео на нужную позицию.
- Выберите канал с контентом — после этого станет доступна кнопка «В эфир». Нажмите её или дважды щёлкните по каналу. Свёрнутое окно программы развернётся только на этом шаге.
- Кнопка «Выйти из эфира» закрывает текущий материал. Если в этой сессии выбрана подложка, появится она; иначе внешний экран станет чёрным.
Для PPTX и PDF доступны стрелки и прямой ввод номера слайда. Позиции слайдов сохраняются отдельно для каждого файла и восстанавливаются при следующем запуске. При переключении с поставленного на паузу видео на другой канал его позиция сохраняется до закрытия приложения.
Верхняя панель остаётся одной компактной строкой. Длинные состояния сокращены до «Авто», «Фон» и «Кликер»; полная расшифровка и текущее состояние доступны в подсказке при наведении.
Чтобы подготовить каналы сразу из одной папки, назовите материалы с номером канала в начале и нажмите 123...-> слева от кнопки «Обзор». Распознаются, например, 3.pdf, 03.mp4, 1 - Доклад.pptx, 4. Презентация.pdf и 01-Заставка.jpg; подходят все поддерживаемые типы файлов. Если целевой канал занят, PDM запросит подтверждение замены. Канал, который уже находится в эфире, не перезаписывается, а одинаковые номера после первого файла пропускаются.
Карандаш в правом верхнем углу карточки задаёт подпись канала. Текст располагается справа и растёт влево, поэтому номер и состояние канала остаются видимыми. Enter или щелчок вне поля сохраняет подпись, Escape отменяет изменение. PPTX и PDF после добавления в канал сразу начинают фоновую подготовку; для PPTX она включает скрытую загрузку в PowerPoint. Статус «Кэширование…» исчезает, когда материал полностью готов к эфиру.
В карточке видеоканала слева от кнопки «В эфир» находится список «После». Выберите в нём любой другой непустой канал — после естественного окончания ролика PDM автоматически и бесшовно отправит этот канал в эфир. Значение «Не переключать» оставляет эфир на последнем кадре. Настройка относится к конкретному каналу и действует в текущей сессии.
Кнопка «Автопереход» находится между кнопками «Видео» и «Подложка (Фон)». Когда она включена, переход вперёд с последнего слайда PPTX/PDF запускает ближайший следующий канал с контентом, а переход назад с первого слайда — ближайший предыдущий. Пустые каналы автоматически пропускаются. При каждом запуске PDM автопереход выключен.
Кнопка «▰ Титры» в верхней панели открывает отдельное окно управления эфирной графикой. Выберите канал с камерой, платой видеозахвата, окном программы или экраном — его текущий кадр будет использован как фон предварительного просмотра.
- В блоке «Выступающие» заранее добавьте столько людей, сколько потребуется. Выберите нужного в списке, укажите ФИО и должность, затем нажмите «Показать». Переключение на следующего выступающего выполняется выбором его карточки и той же кнопкой.
- Для титра выступающего независимо выбираются эффекты появления и исчезновения: мгновенно, плавно, движение слева, справа, снизу или масштабирование.
- В блоке «Информация о мероприятии» можно ввести до трёх строк дополнительного текста, выбрать собственные эффекты и положение: слева, по центру или справа в верхней, центральной либо нижней части экрана.
- Надпись «МЕРОПРИЯТИЕ» является обычным редактируемым заголовком: её можно заменить своим текстом или оставить пустой.
- Для каждого слоя независимо выбирается форма: скруглённый или строгий прямоугольник, капсула, а также два диагональных варианта — с ровной левой и наклонной правой стороной либо с наклонной левой и ровной правой. Боковая цветная полоска повторяет геометрию наклона.
- В оформлении отдельно меняются цвет текста, два цвета фона и два цвета градиентной полоски: у спикера она находится слева, у информации о мероприятии — справа.
- Поле «Автоматически скрыть через» задаёт время показа каждого слоя в секундах. Значение
0отключает автоскрытие; при повторном показе или обновлении отсчёт начинается заново. - По правому клику на канал с внешним источником открывается быстрое меню. Информация о мероприятии находится первой, над списком подготовленных спикеров. Выбор любого пункта отправляет этот канал в эфир, если он ещё не активен, и затем показывает соответствующий титр; там же оба слоя можно скрыть.
- Редактирование полей не меняет уже показанную зрителям графику: подготовленный вариант всегда виден в превью, а эфир обновляется только кнопкой оператора.
- Кнопка «Скрыть все титры» одновременно убирает оба слоя.
- Титры физически рисуются только поверх внешнего источника. При показе PPTX, PDF, видео или изображения они остаются скрытыми и не вмешиваются в бесшовное переключение каналов.
Тексты сохраняются в .pdmconfig, но после запуска PDM или загрузки конфигурации титры не выходят в эфир автоматически.
Откройте Настройки → Конфиг и нажмите «Сохранить конфиг», чтобы сохранить подготовку мероприятия в файл .pdmconfig. Для восстановления выйдите из эфира, откройте ту же вкладку и нажмите «Загрузить конфиг». Загрузка не запускает презентацию, видео, музыку или таймер автоматически — оператор сам выбирает канал и нажимает «В эфир».
PDM проверяет каждый путь перед восстановлением. Если презентацию, PDF, видео или другой файл удалили либо переименовали, программа не пытается угадать новый файл: соответствующий канал остаётся пустым, остальные каналы загружаются как обычно, а пропущенный путь показывается в списке предупреждений. Подписи каналов при этом сохраняются. USB-камеры и платы видеозахвата сохраняются и автоматически переподключаются при возвращении устройства; окна программ и захват экрана нужно выбрать заново, поскольку их системные идентификаторы меняются. Назначения дисплеев применяются только к безопасно распознанным подключённым мониторам.
Кнопка «🖥 Экраны» показывает все подключённые дополнительные мониторы. Для каждого выбирается один режим:
- Основной эфир — один монитор является выделенным главным выходом, остальные показывают его живую беззвучную копию; главный дисплей можно переназначить кнопкой «Сделать главным», в том числе во время эфира;
- Суфлёр — текущий и следующий слайды PPTX/PDF, номер и заметки PowerPoint;
- Информационный экран — независимый PPTX, PDF, видеоролик, изображение, плата видеозахвата/камера либо окно/экран компьютера;
- Таймер — прежний полноэкранный таймер;
- Таймер мероприятия — отдельное полноэкранное табло мероприятия;
- Выключен — на монитор выводится выбранная подложка, а при её отсутствии показывается чёрный экран.
Режимы можно повторять на любом количестве мониторов. При отключении устройства его окно закрывается и не переносится на операторский экран.
В поле «Добавить имя экрана» можно подписать каждый физический монитор, например «Проектор сцены», «Суфлёр спикера» или «Таймер». Имена сохраняются между запусками и входят в файл конфигурации PDM.
- Назначьте одному или нескольким мониторам режим «Информационный экран» в окне «🖥 Экраны».
- Выберите источник: «Выбрать файл» для PPT/PPTX, PDF, видео и изображений; «Внешний источник» для платы видеозахвата или USB-камеры; «Окно / экран» для открытой программы или целого дисплея.
- Для презентации или PDF используйте отдельные стрелки и счётчик слайдов. Это не переключает презентацию в основном эфире.
- Видеоролик не запускается автоматически. Кнопка меняется между «Воспроизвести» и «Пауза»; «Стоп» останавливает ролик и возвращает его в начало, полоса с таймингом позволяет перейти к нужному месту, а «Зациклить» включает повтор. Внешний видеовход и захват окна/экрана начинают показываться сразу после выбора, без передачи звука.
- Кнопка «Отключить контент на информационном экране» останавливает в том числе видеозахват и возвращает общую подложку, а если она не выбрана — чёрный фон.
Выбранный файл или источник действует только в текущей сессии PDM, если оператор явно не сохранил его в конфигурацию. Обычный таймер не заменяет содержимое информационных экранов: он показывается на мониторах с режимом «Таймер», а при их отсутствии — поверх основного эфира.
Таймер выводится на один или несколько мониторов с режимом «Таймер», назначенным в окне «Экраны». Если такой монитор не назначен, таймер автоматически накладывается поверх основного эфира. Доступны:
- длительность и быстрые поправки
±1,±5,±10минут; - прозрачность текста;
- цвет основного таймера;
- цвет за одну минуту до окончания;
- цвет перелимита времени;
- отдельные звуковые сигналы на отметках 1:00 и 0:00.
Положение, масштаб и оформление сохраняются. Текущее время и выбранные звуки начинаются заново при каждом запуске.
Кнопка «◷ Таймер+» открывает независимую панель дополнительного таймера, выполненного по макету экрана мероприятия. Существующий простой таймер при этом не меняется: оба таймера имеют отдельные настройки и могут использоваться одновременно.
В панели задаются заголовок, название события, начало и конец, стоимость минуты, однотонный цвет, двухцветный градиент с настраиваемым углом либо фоновое изображение, а также цвет текста. Для крупного центрального значения выбирается ровно один из четырёх режимов: «Текущее время», «Таймер», «До начала» или «До конца». У каждого режима собственный запоминаемый заголовок: переключение кнопок возвращает последний текст именно этого режима. Автоматические варианты используют формулировки «До начала мероприятия» и «До конца мероприятия», а кнопка «Авто» сбрасывает только заголовок текущего режима. Также можно отдельно скрыть или показать верхние часы, расписание, заголовок, название события, строку «До завершения» и итоговую стоимость. Значение «До завершения» всегда рассчитывается как разница между временем окончания мероприятия и текущими часами. Кнопки Play, Pause и Stop управляют только режимом «Таймер»; значения «До начала» и «До конца» независимо рассчитываются по системным часам. Время таймера корректируется кнопками ±1, ±5, ±10 минут либо тремя отдельными двухзначными полями часов, минут и секунд. Кнопка «Сейчас» отменяет локальную правку времени и возвращает в превью время и состояние таймера, которые в эту секунду идут в эфире; пока таймер не отправлен в эфир, кнопка недоступна. Каждое поле принимает только две цифры, минуты и секунды ограничены значением 59. Весь интерфейс Timer+ и экран вывода используют встроенный SBSansDisplay-Light, поэтому установка шрифта в системе не требуется.
Стоимость начисляется только за время после перехода таймера в минус. Сброс или установка нового времени не обнуляют уже накопленный итог: стоимость следующего перелимита прибавляется к нему. Кнопка «Сбросить итог» рядом с ценой минуты отдельно обнуляет общую сумму перелимита.
Чтобы вывести табло, назначьте монитору режим «Таймер мероприятия» в окне «Экраны» и нажмите «Отправить в эфир». Если экран ещё не назначен, слово «Экраны» в предупреждении является ссылкой: раздел откроется поверх Таймера+, а после его закрытия оператор вернётся в ту же панель с сохранёнными правками. После выхода табло в эфир любые изменения видны только в превью и не меняют изображение зрителей. Кнопка «Обновить эфир» применяет подготовленный вариант, а «Убрать из эфира» отключает табло. Параметры сохраняются в .pdmconfig, но после загрузки конфигурации таймер остаётся остановленным и не выходит в эфир автоматически.
Кнопка «⚡ LIVE» рядом со Stop отдельно разрешает оперативное управление эфирным таймером. Пока она выключена, Play, Pause, Stop, поправки минут и ввод времени меняют только превью. Когда LIVE подсвечена красным, эти команды применяются к внешнему экрану немедленно; текст, фон и остальные настройки по-прежнему требуют кнопки «Обновить эфир».
Если на конкретном компьютере не создаются превью PPTX, появляется чёрный экран или некорректно определяется монитор:
- Запустите приложение и воспроизведите проблему.
- Откройте Настройки → Диагностика.
- Нажмите «Открыть папку логов».
- Передайте файл
pdm-diagnostic.logразработчику.
Лог содержит версии приложения, Windows, Electron и Office, параметры экранов и DPI, этапы запуска PowerPoint, экспорт превью, ошибки медиапротокола и события завершения процессов. При достижении 8 МБ он автоматически ротируется; предыдущая версия сохраняется рядом. При аварии Electron дополнительно создаёт локальный .dmp-файл без отправки данных в интернет.
Понадобятся Node.js 22.13+ (или 24+) и Windows PowerShell.
npm ci
npm run dev # режим разработки с hot reload
npm run build # сборка main/preload/renderer в out/
npm run package:win # Windows NSIS installer в dist/Подписанная локальная сборка поддерживается отдельным сценарием и требует собственного .pfx-сертификата:
powershell -ExecutionPolicy Bypass -File .\build\build-signed.ps1Для автоматической сборки используется GitHub Actions. Ручной запуск создаёт artifact, а push тега v* дополнительно публикует GitHub Release.
| Слой | Реализация |
|---|---|
| Версия приложения | 1.1.5 |
| Desktop runtime | Electron 43.2.0 |
| Интерфейс | React 19.2.8, TypeScript 7.0.2, Tailwind CSS 4.3.3 |
| Состояние | Zustand 5.0.14 |
| Сборка | electron-vite 5.0.0, Vite 7.3.6, PostCSS 8.5.25, electron-builder 26.15.3, NSIS |
| PowerPoint | PowerShell, COM Automation, постоянный JSON-демон с восстановлением состояния Office |
| PDFium WASM (@hyzyla/pdfium 2.1.13), pdfjs-dist 6.2.108 и Windows.Data.Pdf | |
| Внешние источники | Electron Desktop Capture, MediaDevices, постоянные видеопотоки и нативное перечисление окон Windows |
| Таймеры | простой WPF-оверлей через PowerShell и отдельное React-табло мероприятия |
Архитектура бесшовного эфира и обязательные правила против регрессий описаны в docs/SEAMLESS_SWITCHING.md.
- renderer работает с
sandbox,contextIsolation,webSecurityи Content Security Policy; - локальные файлы передаются через ограниченный протокол
pdm-media://, а не открываются напрямую черезfile://; - переходы, разрешения и допустимые пути проверяются в main process;
- Electron Fuses отключают
RunAsNode,NODE_OPTIONSи CLI Inspector; шифрование cookies, проверка целостности ASAR и загрузка приложения только из ASAR включены; - приложение не требует учётной записи и работает офлайн;
- CI не хранит сертификаты подписи в репозитории.
Технические материалы находятся в папке compliance/, а уведомления о лицензиях встроенных компонентов — в THIRD_PARTY_NOTICES.md.
src/
main/ окна, IPC, диагностика, PowerPoint-демон, захват окон, pdm-media
preload/ изолированный API между renderer и main process
renderer/ React-интерфейс оператора и эфирного окна
scripts/ PowerShell: Office COM, таймер, аудио и дисплеи
build/ иконка, NSIS-настройки, Electron Fuses и подпись
compliance/ документы по безопасности и сетевому поведению
docs/ архитектурные заметки и правила против регрессий
Проект распространяется по лицензии MIT: его можно свободно использовать, изменять и распространять с сохранением текста лицензии.
English summary
Presentation Display Manager is a Windows desktop application for driving a projector or secondary display during conferences, talks, streams, and live events. The operator keeps the library, channel grid, and playback controls on the primary monitor while the audience sees only the selected content.
Key features include numbered multi-page channels, automatic folder-to-channel assignment from numbered filenames, editable channel captions, portable .pdmconfig event snapshots, recovery of prepared channels after an unexpected crash (a confirmed normal exit clears the workspace), optional automatic navigation from the first or last PPTX/PDF slide to the nearest populated adjacent channel, seamless flicker-free switching between PDF, PowerPoint, video and live sources, background PowerPoint slide caching, fast rendering and progressive thumbnails for complex PDFs, Office document previews, cameras and USB/HDMI capture devices, program-window and screen capture, customizable speaker and event lower thirds over live sources, video playback with position restore, independent information-screen video transport and looping, images, background music, configurable display and audio output, a draggable persistent timer with normal/warning/overtime colors, timer mirroring across program displays, aspect-correct PPTX live copies fitted independently to each target monitor, automatic 4K/DPI display reflow, and built-in crash diagnostics. Minimized program windows are restored only when taken on air, the PowerPoint editor is hidden before the first live frame, and the operator cursor is kept out of captured-window previews while PDM has focus. Program-window audio is not captured.
Download the latest Windows installer from GitHub Releases. Microsoft PowerPoint is required for PPT/PPTX playback and preview generation. The application itself works offline and is released under the MIT License.
npm ci
npm run dev
npm run build
npm run package:win