ViewerConfig

Параметры клиентского виджета просмотрщика

ViewerConfig (namespace Doconut) описывает внешний вид и поведение браузерного просмотрщика. Он не влияет на качество рендеринга документа; для этого используйте конфигурацию формата. Класс C# и давно существующий JavaScript‑виджет имеют разные значения по умолчанию, поэтому сопоставляйте параметры явно.

Два изменения на клиенте в этом выпуске завершаются без ошибок. Функции‑обработчики передаются как параметры — виджет больше не выводит имена глобальных функций из идентификатора контейнера — и ResPath должен указывать на префикс ресурсов, а не на корень приложения. Оба оставляют сервер работать корректно и ничего не выводят в консоль браузера. Если вы переносите страницу из предыдущей библиотеки, ознакомьтесь с Обратными вызовами и Контрольным списком путей прежде чем что‑либо ещё.

Свойства C#

ТипСвойствоПо умолчаниюОписание
boolShowThumbstrueПоказывать панель миниатюр.
boolAutoLoadfalseАвтоматически загружать после инициализации. Обычный поток токенов явно вызывает View(token).
boolAutoFocustrueПеремещать фокус/прокрутку браузера к просмотрщику во время инициализации.
boolAutoPageFocustrueДержать текущую миниатюру видимой при смене страниц.
intPageZoom100Начальный процент масштабирования.
intZoomStep10Процент, добавляемый или убираемый командами масштабирования.
intMaxZoom300Максимальный процент масштабирования.
boolShowToolTiptrueПоказывать подсказку с позицией страницы при прокрутке.
stringToolTipPageText"Page "Префикс, используемый в подсказке страницы.
boolCacheEnabledfalseСохранять движущееся окно изображений страниц в памяти браузера. Не использует localStorage.
boolLargeDocfalseДобавлять элементы страниц пакетами с задержкой для больших документов.
boolShowHyperlinksfalseОтображать наложения гиперссылок, если серверная конфигурация их извлекла.
boolFixedZoomtrueИспользовать фиксированный процент масштабирования вместо адаптивного пересчёта.
intFixedZoomPercent100Фиксированный масштаб для настольных устройств.
intFixedZoomPercentMobile75Фиксированный масштаб для мобильных устройств.
stringBasePath"/"Ветка, где хост сопоставляет UseDoconut().
stringResPath"doconut-res"Базовый путь к ресурсам, используемый виджетом. В обычной настройке указывает на <ResourcesPath>/images.
stringFitType"width""width", "height" или пусто — без автоматической подгонки. "page" не поддерживается текущим виджетом.
boolRetryOn409falseВключить опрос, когда асинхронное/распределённое создание страниц отвечает 202 Accepted; 409 также принимается для совместимости со старыми серверами. Не требуется обычному синхронному просмотрщику.
csharp
var config = new ViewerConfig
{
    ShowThumbs = true,
    AutoLoad = false,
    PageZoom = 100,
    MaxZoom = 300,
    FitType = "width",
    BasePath = "/doconut",
    ResPath = "/doconut-res/images",
    ShowHyperlinks = true
};

Сопоставление C# → JavaScript

Не передавайте напрямую сериализованный ViewerConfig в docViewer(...). Большинство ключей виджета записаны в camelCase, тогда как три установленных ключа пути/подгонки — в PascalCase.

C#JavaScript
ShowThumbsshowThumbs
AutoLoadautoLoad
AutoFocusautoFocus
AutoPageFocusautoPageFocus
PageZoompageZoom
ZoomStepzoomStep
MaxZoommaxZoom
ShowToolTipshowToolTip
ToolTipPageTexttoolTipPageText
CacheEnabledcacheEnabled
LargeDoclargeDoc
ShowHyperlinksshowHyperlinks
FixedZoomfixedZoom
FixedZoomPercentfixedZoomPercent
FixedZoomPercentMobilefixedZoomPercentMobile
BasePathBasePath
ResPathResPath
FitTypeFitType
RetryOn409retryOn409

Значения по умолчанию в JavaScript

У виджета более старые значения по умолчанию, отличающиеся от класса C#. Ниже перечислены текущие значения из реализации docViewer.js.

ПараметрПо умолчаниюПримечания
leftMinWidth / leftMaxWidth220 / 800Границы ширины панели миниатюр.
showThumbstrueНачальная видимость миниатюр.
autoFocus / autoPageFocustrue / falseautoPageFocus отличается от значения по умолчанию в C#.
thumbWidth / thumbHeight / thumbPadding150 / 200 / 10Геометрия миниатюр в пикселях.
pageZoom / zoomStep / maxZoom100 / 10 / 200maxZoom в JavaScript отличается от C# (300).
showToolTip / toolTipPageTexttrue / "Page "Подсказка с позицией страницы.
format / doc / AccessToken"" / 0 / ""Внутренние значения инициализации; обычно заполняются View(token).
debugModefalseДополнительная диагностика на клиенте.
FitType""Автоматическая подгонка отключена, если не указана.
BasePath"DocImage.axd"Историческое значение клиента, сохранённое для совместимости. Современные хосты ASP.NET Core должны явно задать ветку сопоставленного middleware.
ResPath""Необходимо явно указать путь к встроенным изображениям.
cacheEnabled / cacheCount / cacheDelayfalse / 3 / 3Окно предзагрузки страниц в памяти и задержка.
autoLoadfalseРекомендуется явный поток токенов.
largeDoctrueОтличается от значения по умолчанию в C#.
fixedZoomfalseОтличается от значения по умолчанию в C#.
fixedZoomPercent / fixedZoomPercentMobile100 / 50Мобильное значение отличается от C# (75).
showHyperlinkstrueТребует серверного извлечения гиперссылок для отображения наложений.

Устанавливайте все важные параметры явно, а не полагайтесь на любые наборы значений по умолчанию:

html
<div id="divDocViewer"><div id="div_ctlDoc"></div></div>

<script>
const objViewer = $('#div_ctlDoc').docViewer({
    showThumbs: true,
    autoLoad: false,
    autoFocus: true,
    autoPageFocus: true,
    pageZoom: 100,
    zoomStep: 10,
    maxZoom: 300,
    FitType: 'width',
    cacheEnabled: false,
    largeDoc: false,
    showHyperlinks: true,
    fixedZoom: true,
    fixedZoomPercent: 100,
    fixedZoomPercentMobile: 75,
    BasePath: '/doconut',
    ResPath: '/doconut-res/images',
    onViewerReady: function () {},
    onError: function (message) { console.error('DocViewer:', message); }
});
</script>

Обратные вызовы

Обратный вызовАргументыНазначение
onPageLoadingpageNumЗапрос страницы начинается.
onPageLoadedpageNumИзображение страницы завершило загрузку.
onThumbnailClickedpageNumПользователь выбрал миниатюру.
onPageClickedpageNumПользователь выбрал страницу.
onDoubleClicknoneВ виджете зафиксировано двойное щелчок.
onViewerBusynoneВиджет перешёл в состояние занятости.
onViewerReadynoneИнициализация завершена.
onViewerErrornoneВиджет перешёл в состояние ошибки.
onErrormessageОперация вернула сообщение об ошибке.
onCopydataДоступны данные копирования текста.
onAutoLoadStatuspageNumАвтозагрузка продвинулась до указанной страницы.
onThumbsShownnoneПанель миниатюр стала видимой.
onAnnLoadednoneДанные аннотаций загружены.
onAnnSavednoneДанные аннотаций сохранены.
onAnnSaveErrornoneСохранение аннотаций завершилось ошибкой.
onAnnClosednoneUI аннотаций закрыт.

Держите обратные вызовы быстрыми; отправляйте телеметрию асинхронно и не блокируйте рендеринг страниц.

Каждый из этих параметров является опцией в объекте инициализации. В прежнем просмотрщике функции искались глобально по имени, сформированному из идентификатора контейнера — страница с <div id="div_ctlDoc"> требовала объявить function ctlDoc_OnViewerReady(). Этот поиск удалён. Передавайте функцию явно:

javascript
objctlDoc = $('#div_ctlDoc').docViewer({
    // ... ваши текущие параметры ...
    onViewerBusy:     ctlDoc_OnViewerBusy,      // ранее находилась по имени
    onViewerReady:    ctlDoc_OnViewerReady,     // ранее находилась по имени
    onCopy:           ctlDoc_Copy,              // ранее ctlDoc_Copy(text)
    onAutoLoadStatus: ctlDoc_AutoLoadStatus     // ранее ctlDoc_AutoLoadStatus(page)
});

Старый поиск был обёрнут пустым catch, поэтому ничего не сообщалось. В этом выпуске функции просто не вызываются: типичный симптом — крутящийся индикатор, который никогда не останавливается, потому что обработчик, скрывающий его, был onViewerReady. Документ при этом рендерится корректно.

Обратного вызова для кликов по ссылкам нет — обработка гиперссылок встроена и управляется параметром showHyperlinks.

Группы публичных методов

ГруппаОбщие методы
Жизненный циклView(token, accessToken?), Close(server?), Token(), Init(), IsLoaded()
НавигацияGotoPage(page), ShowPage(page, focus?), Next(next), CurrentPage(), TotalPages()
Масштаб и подгонкаZoom(zoomIn), CurrentZoom(), FitType(value), Refit()
ОриентацияRotate(page, angle), Flip(page, flipType)
МиниатюрыHideThumbs(hide), ThumbSize(size), ReloadThumbs(width), ScrollToThumb(thumb)
ПоискCanSearch(), Search(...), SearchMatchCount(), SearchSummary(...), GotoSearchMatch(...)
АннотацииSaveAnnotations(), GetAnnotations(), PushAnnotations(...), CloseAnnotations(...), ShowAnnotations(...)
КопированиеCopy(...), CopyPage(pageNumber), CopyMode(enabled)

Файл JavaScript также содержит внутренние вспомогательные функции. Считайте стабильными только те методы, которые задокументированы в этом справочнике или в руководствах по функциям.

Повторные попытки, пока распределённая страница ещё рендерится

retryOn409 сохраняет своё историческое название. Он предназначен для асинхронного создания страниц и повторяет текущий ответ готовности 202 Accepted, а также более старый сигнал 409 Conflict. При включении виджет опрашивает с этими значениями по умолчанию в JavaScript:

ПараметрПо умолчанию
retryInitialDelayMs250
retryBackoffFactor1.6
retryMaxDelayMs2500
retryMaxAttempts60
retryMaxTotalMs120000

Оставьте отключённым для обычного одноузлового просмотрщика. Включение не сделает синхронный рендер асинхронным.

Включайте, когда страницы обслуживаются из общего хранилища с FirstPagePriority, где последующие страницы действительно отвечают 202 Accepted, пока не будут записаны. Клиент, который не повторяет запросы, покажет повреждённые плитки для ещё рендерящихся страниц — см. Распределённые развертывания.

Контрольный список путей

  • DoconutOptions.MiddlewarePath должен описывать ветку, которую вы действительно маппите.
  • BasePath должен указывать на эту ветку. В справочном приложении сохраняется историческая форма запроса DocImage.axd на ветке MapWhen, поэтому BasePath: '/'.
  • DoconutOptions.ResourcesPath — это маршрут к встроенным ресурсам.
  • ResPath обычно указывает на подпапку /images — 'doconut-res/images' с префиксом по умолчанию. Пустой ResPath был корректен в предыдущей библиотеке, где ресурсы брались из корня приложения; здесь это неверно и приводит к ошибке без сообщения.
  • ExtractHyperlinks должен быть включён в конфигурации формата сервера, прежде чем showHyperlinks сможет что‑то отобразить.

Была ли эта страница полезной?