ViewerConfig
Опции клиентского виджета просмотрщика
ViewerConfig (namespace Doconut) описывает внешний вид и поведение браузерного просмотрщика. Он не влияет на качество рендеринга документа; для этого используйте конфигурацию формата. Класс C# и устаревший плагин JavaScript имеют разные значения по умолчанию, поэтому сопоставляйте параметры явно.
Свойства C#
| Тип | Свойство | По умолчанию | Описание |
|---|---|---|---|
bool | ShowThumbs | true | Отображать панель миниатюр. |
bool | AutoLoad | false | Автоматически загружать после инициализации. Обычный поток токенов явно вызывает View(token). |
bool | AutoFocus | true | Перемещать фокус/прокрутку браузера к просмотрщику во время инициализации. |
bool | AutoPageFocus | true | Сохранять текущую миниатюру видимой при смене страниц. |
int | PageZoom | 100 | Начальный процент масштабирования. |
int | ZoomStep | 10 | Процент, добавляемый или удаляемый командами масштабирования. |
int | MaxZoom | 300 | Максимальный процент масштабирования. |
bool | ShowToolTip | true | Отображать подсказку с позицией страницы при прокрутке. |
string | ToolTipPageText | "Page " | Префикс, используемый в подсказке страницы. |
bool | CacheEnabled | false | Сохранять скользящее окно изображений страниц в памяти браузера. Не использует localStorage. |
bool | LargeDoc | false | Добавлять элементы страниц пакетами с задержкой для больших документов. |
bool | ShowHyperlinks | false | Отображать наложения гиперссылок, когда серверная конфигурация их извлекла. |
bool | FixedZoom | true | Использовать фиксированный процент масштабирования вместо адаптивного пересчёта. |
int | FixedZoomPercent | 100 | Фиксированный масштаб для настольных устройств. |
int | FixedZoomPercentMobile | 75 | Фиксированный масштаб для мобильных устройств. |
string | BasePath | "/" | Куда просмотрщик отправляет запросы страниц. "/" — это обработчик DocImage.axd в корне сайта. Для приложения в виртуальном каталоге используйте имя каталога без начального / ("myapp" означает /myapp/DocImage.axd). |
string | ResPath | "doconut-res/images" | Папка, из которой виджет загружает свои изображения: папка images внутри ResourcesPath, без начального /. |
string | FitType | "width" | "width", "height" или пусто для отключения автоматического подгонения. "page" не поддерживается текущим виджетом. |
bool | RetryOn409 | false | Повторно пытается выполнить запросы страниц, которые отвечают «still rendering». DocImage.axd рендерит синхронно и никогда не посылает этот сигнал; оставьте false. |
var config = new ViewerConfig
{
ShowThumbs = true,
AutoLoad = false,
PageZoom = 100,
MaxZoom = 300,
FitType = "width",
BasePath = "/", // "/" = обработчик DocImage.axd в корне сайта (Web.config)
ResPath = "doconut-res/images", // папка изображений внутри ResourcesPath, без начального '/'
ShowHyperlinks = true
};
// Вывести его с помощью viewer.RenderViewer("viewerEl", token, config) - см. справку по Viewer.Создание ViewerConfig с помощью RenderViewer
Viewer.RenderViewer(elementId, token, config) преобразует ViewerConfig в скрипт инициализации виджета. Он записывает шесть свойств из перечисленных — BasePath, ResPath, ShowThumbs, AutoLoad, PageZoom и FitType — и затем вызывает View(token). Остальные свойства не записываются: для MaxZoom, ShowHyperlinks, настроек масштабирования или любых обратных вызовов инициализируйте виджет самостоятельно, используя параметры JavaScript ниже. См. Просмотрщик для RenderViewer.
Сопоставление C# → JavaScript
Не передавайте напрямую сериализованный ViewerConfig в docViewer(...). Большинство ключей виджета используют camelCase, тогда как три установленных ключа пути/подгонки используют PascalCase.
| C# | JavaScript |
|---|---|
ShowThumbs | showThumbs |
AutoLoad | autoLoad |
AutoFocus | autoFocus |
AutoPageFocus | autoPageFocus |
PageZoom | pageZoom |
ZoomStep | zoomStep |
MaxZoom | maxZoom |
ShowToolTip | showToolTip |
ToolTipPageText | toolTipPageText |
CacheEnabled | cacheEnabled |
LargeDoc | largeDoc |
ShowHyperlinks | showHyperlinks |
FixedZoom | fixedZoom |
FixedZoomPercent | fixedZoomPercent |
FixedZoomPercentMobile | fixedZoomPercentMobile |
BasePath | BasePath |
ResPath | ResPath |
FitType | FitType |
RetryOn409 | retryOn409 |
Значения по умолчанию JavaScript
Виджет имеет более старые значения по умолчанию, которые отличаются от класса C#. Ниже перечислены значения, взятые из текущей реализации docViewer.js.
| Опция | По умолчанию | Примечания |
|---|---|---|
leftMinWidth / leftMaxWidth | 220 / 800 | Границы ширины панели миниатюр. |
showThumbs | true | Начальная видимость миниатюр. |
autoFocus / autoPageFocus | true / false | autoPageFocus отличается от значения по умолчанию в C#. |
thumbWidth / thumbHeight / thumbPadding | 150 / 200 / 10 | Геометрия миниатюр в пикселях. |
pageZoom / zoomStep / maxZoom | 100 / 10 / 200 | JavaScript maxZoom отличается от C# (300). |
showToolTip / toolTipPageText | true / "Page " | Всплывающая подсказка с номером страницы. |
format / doc / AccessToken | "" / 0 / "" | Внутренние значения инициализации; обычно заполняются функцией View(token). |
debugMode | false | Дополнительная диагностика клиента. |
FitType | "" | Автоматическое подгонка не применяется, если не указано. |
BasePath | "DocImage.axd" | Устаревшее значение по умолчанию. Установите явно: '/' для обработчика в корне сайта. |
ResPath | "" | Установите явно путь к встроенным изображениям. |
cacheEnabled / cacheCount / cacheDelay | false / 3 / 3 | Окно и задержка предзагрузки страниц в памяти. |
autoLoad | false | Рекомендуется явный поток токенов. |
largeDoc | true | Отличается от значения по умолчанию в C#. |
fixedZoom | false | Отличается от значения по умолчанию в C#. |
fixedZoomPercent / fixedZoomPercentMobile | 100 / 50 | Мобильное значение отличается от C# (75). |
showHyperlinks | true | Требует извлечения на сервере для создания наложений. |
Установите все важные для поведения значения явно, вместо того чтобы полагаться на любой набор значений по умолчанию:
<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: '/',
ResPath: 'doconut-res/images',
onViewerReady: function () {},
onError: function (message) { console.error('DocViewer:', message); }
});
</script>Обратные вызовы
| Обратный вызов | Аргументы | Назначение |
|---|---|---|
onPageLoading | pageNum | Запрос страницы начинается. |
onPageLoaded | pageNum | Изображение страницы завершило загрузку. |
onThumbnailClicked | pageNum | Пользователь выбрал миниатюру. |
onPageClicked | pageNum | Пользователь выбрал страницу. |
onDoubleClick | none | Просмотрщик получил двойной клик. |
onViewerBusy | none | Просмотрщик вошёл в состояние занятости. |
onViewerReady | none | Инициализация завершена. |
onViewerError | none | Просмотрщик перешёл в состояние ошибки. |
onError | message | Операция вернула сообщение об ошибке. |
onCopy | data | Доступны данные копирования текста. |
onAutoLoadStatus | pageNum | Автозагрузка продвинулась до страницы. |
onThumbsShown | none | Панель миниатюр стала видимой. |
onAnnLoaded | none | Данные аннотации загружены. |
onAnnSaved | none | Данные аннотации сохранены. |
onAnnSaveError | none | Сохранение аннотации не удалось. |
onAnnClosed | none | Интерфейс аннотации закрыт. |
Сохраняйте обратные вызовы быстрыми; отправляйте телеметрию асинхронно и не блокируйте рендеринг страницы.
Группы публичных методов
| Группа | Общие методы |
|---|---|
| Жизненный цикл | 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 также содержит внутренние вспомогательные функции. Считайте стабильными только те методы, которые используются в справочном UI и задокументированы здесь или в руководствах по функциям.
Параметры повторных попыток
Виджет также принимает retryOn409 и его настройки отката (retryInitialDelayMs, retryBackoffFactor, retryMaxDelayMs, retryMaxAttempts, retryMaxTotalMs). Они предназначены для развертываний, у которых страницы генерируются в фоновом режиме. DocImage.axd рендерит каждую страницу во время запроса, поэтому оставьте retryOn409 выключенным.
Список проверок пути
BasePathравен'/', когда обработчикDocImage.axdнаходится в корне сайта — атрибутpathобработчика вWeb.configопределяет, где он отвечает. В виртуальном каталоге используйте имя каталога без начального/('myapp', а не'/myapp': просмотрщик добавляет слеш, и//myapp/...является запросом к другому хосту).DoconutOptions.ResourcesPathуказывает, где модуль ресурсов обслуживает встроенные файлы (/doconut-resпо умолчанию).ResPathуказывает на подпапкуimages, также без начального/('doconut-res/images'). Указание'doconut-res'приводит к тому, что все иконки возвращают 404, хотя документ всё ещё рендерится.- В MVC
routes.IgnoreRoute("doconut-res/{*pathInfo}")должен следовать заResourcesPath, если вы изменяете его. ExtractHyperlinksдолжен быть включён в конфигурации формата сервера, прежде чемshowHyperlinksсможет что‑то отобразить.
Была ли эта страница полезной?