Проверка параметров и их приоритет
Корень — плоский объект с именами параметров PDFViewerApplicationOptions (AppOptions) версии 6.4.299. Записывайте параметры непосредственно в корневой объект, без обёрток options/viewer/pdfjs. Комментарии и завершающие запятые в JSON недопустимы; для файла используйте кодировку UTF-8 без BOM.
- Принимаются известные строки, числа и boolean с правильным типом:
"2"не равно2,"false"не равноfalse. - Исключение для объекта:
localeProperties: {"lang":"ru"}. Применяется только lang. - Неизвестные имена и неверные типы пропускаются с предупреждением. viewerCssTheme проверяется на 0, 1, 2; для остальных числовых enum используйте справочник: все диапазоны загрузчик не проверяет.
- Параметры с null по умолчанию, runtime-объекты, функции и workerPort не настраиваются JSON. API-параметр rangeChunkSize отсутствует в AppOptions viewer и профилем не принимается.
- Не редактируйте app_options.js, viewer.mjs и pdf.mjs: профиль применяется до запуска viewer.
Сначала используются значения PDF.js, затем допустимые значения JSON. Для активного профиля принудительно включается disablePreferences=true: браузерные Preferences не заменяют профиль. Даже пустой {} включает это правило. disablePreferences=false в JSON игнорируется; для обычных Preferences используйте config=none. Если непустой профиль содержит только отклонённые параметры и не содержит disablePreferences, стандартное поведение Preferences сохраняется.
Preferences и история состояния конкретного PDF — разные механизмы. viewOnLoad=0 допускает восстановление страницы, масштаба и режимов документа. Для открытия с начальными значениями профиля задайте viewOnLoad=1. Явный fragment #page=3&zoom=150 по-прежнему задаёт страницу/масштаб и может перекрывать профиль. JSON задаёт стартовое поведение; кнопки и действия пользователя он не блокирует.