ViewerConfig
Параметри віджета переглядача клієнта
ViewerConfig (namespace Doconut) описує зовнішній вигляд та поведінку переглядача в браузері. Це не впливає на якість відображення документу; для цього використовуйте конфігурацію формату. Клас C# та довготривалий JavaScript‑віджет мають різні типові значення, тому явно зіставляйте параметри.
Дві зміни на боці клієнта в цьому випуску не повідомляються. Функції‑обробники передаються як параметри — віджет більше не формує глобальні імена функцій з id контейнера — і
ResPathмає вказувати на префікс ресурсів, а не на корінь застосунку. Обидва залишають сервер працювати бездоганно і нічого не виводять у консоль браузера. Якщо ви переносите сторінку з попередньої бібліотеки, прочитайте Зворотні виклики та Контрольний список шляхів перед усім іншим.
Властивості 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 у корені сайту; інакше — гілка, де хост мапить UseDoconut(), без початкового / ("doconut" означає /doconut/DocImage.axd). |
string | ResPath | "doconut-res/images" (26.9.0; "doconut-res" раніше) | Тека, з якої віджет завантажує власні зображення: тека images у ResourcesPath, без початкового /. |
string | FitType | "width" | "width", "height" або порожньо — без автоматичного підгоняння. "page" не підтримується поточним віджетом. |
bool | RetryOn409 | false | Увімкнути опитування, коли асинхронне/розподілене створення сторінок відповідає 202 Accepted; 409 також приймається для сумісності зі старими серверами. Не потрібно для звичайного синхронного переглядача. |
var config = new ViewerConfig
{
ShowThumbs = true,
AutoLoad = false,
PageZoom = 100,
MaxZoom = 300,
FitType = "width",
BasePath = "doconut", // без початкового '/': переглядач додає його ("/doconut" стало б //doconut, інший хост)
ResPath = "doconut-res/images",
ShowHyperlinks = true
};Відображення 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 | maxZoom у JavaScript відрізняється від C# (300). |
showToolTip / toolTipPageText | true / "Page " | Підказка позиції сторінки. |
format / doc / AccessToken | "" / 0 / "" | Внутрішні значення ініціалізації; зазвичай заповнюються View(token). |
debugMode | false | Додаткова діагностика на боці клієнта. |
FitType | "" | Автоматичне підгонка не виконується, якщо не вказано. |
BasePath | "DocImage.axd" | Історичне значення за замовчуванням клієнта збережено для сумісності. Поточні хости ASP.NET Core повинні встановлювати його явно до відповідної гілки middleware. |
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: 'doconut',
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 | Інтерфейс анотацій закрито. |
Тримайте зворотні виклики швидкими; надсилайте телеметрію асинхронно і не блокуйте рендеринг сторінки.
Кожен з цих параметрів є властивістю у об’єкті ініціалізації. Попередній переглядач шукав глобальні функції, імена яких формувалися з ідентифікатора контейнера — на сторінці з <div id="div_ctlDoc"> доводилося лише оголосити function ctlDoc_OnViewerReady(). Такий пошук більше не використовується. Передайте функції явно:
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‑за замовчуванням:
| Опція | За замовчуванням |
|---|---|
retryInitialDelayMs | 250 |
retryBackoffFactor | 1.6 |
retryMaxDelayMs | 2500 |
retryMaxAttempts | 60 |
retryMaxTotalMs | 120000 |
Залиште його вимкненим для звичайного одно‑вузлового переглядача. Увімкнення не може зробити непідтримуваний синхронний рендер асинхронним.
Увімкніть його, коли сторінки подаються зі спільного сховища з FirstPagePriority, де пізніші сторінки законно відповідають 202 Accepted, доки не будуть записані. Клієнт, який не повторює запити, показуватиме пошкоджені плитки для сторінок, що ще рендеряться — див. Розподілені розгортання.
Перевірка шляху
DoconutOptions.MiddlewarePathмає описувати гілку, яку ви фактично мапите.BasePathмає вказувати цю гілку без початкового/('doconut', а не'/doconut': переглядач додає слеш, і//doconut/...— це запит до іншого хоста). Референтний застосунок зберігає історичну форму запитуDocImage.axdна гілціMapWhenі тому встановлюєBasePath: '/'.DoconutOptions.ResourcesPath— це маршрут вбудованих ресурсів.ResPathзазвичай вказує на підпапкуimagesбез початкового/—'doconut-res/images'з префіксом за замовчуванням. ПорожнійResPathбув правильним у попередній бібліотеці, де ресурси бралися з кореня застосунку; тут це некоректно і призводить до помилки без повідомлення.ExtractHyperlinksмає бути ввімкнено у конфігурації формату сервера, перш ніжshowHyperlinksзможе щось відобразити.
Чи була ця сторінка корисною?