ViewerConfig

Параметри віджета переглядача клієнта

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

Дві зміни на боці клієнта в цьому випуску не повідомляються. Функції‑обробники передаються як параметри — віджет більше не формує глобальні імена функцій з id контейнера — і ResPath має вказувати на префікс ресурсів, а не на корінь застосунку. Обидва залишають сервер працювати бездоганно і нічого не виводять у консоль браузера. Якщо ви переносите сторінку з попередньої бібліотеки, прочитайте Зворотні виклики та Контрольний список шляхів перед усім іншим.

Властивості C#

ТипВластивістьТиповоОпис
boolShowThumbstrueПоказувати панель мініатюр.
boolAutoLoadfalseАвтоматично завантажувати після ініціалізації. Звичайний потік токенів викликає View(token) явно.
boolAutoFocustrueПереміщати фокус/прокрутку браузера до переглядача під час ініціалізації.
boolAutoPageFocustrueЗалишати поточну мініатюру видимою під час зміни сторінок.
intPageZoom100Початковий відсоток масштабування.
intZoomStep10Відсоток, який додається або віднімається командами масштабування.
intMaxZoom300Максимальний відсоток масштабування.
boolShowToolTiptrueПоказувати підказку позиції сторінки під час прокрутки.
stringToolTipPageText"Page "Префікс, що використовується у підказці сторінки.
boolCacheEnabledfalseЗберігати рухоме вікно зображень сторінок у пам’яті браузера. Не використовує localStorage.
boolLargeDocfalseДодавати елементи сторінок пакетами у часі для великих документів.
boolShowHyperlinksfalseВідображати накладки гіперпосилань, коли серверна конфігурація їх витягнула.
boolFixedZoomtrueВикористовувати фіксований відсоток масштабування замість адаптивного перерахунку.
intFixedZoomPercent100Фіксоване масштабування для настільних пристроїв.
intFixedZoomPercentMobile75Фіксоване масштабування для мобільних пристроїв.
stringBasePath"/"Місце, куди переглядач надсилає запити сторінок. "/" — це DocImage.axd у корені сайту; інакше — гілка, де хост мапить UseDoconut(), без початкового / ("doconut" означає /doconut/DocImage.axd).
stringResPath"doconut-res/images" (26.9.0; "doconut-res" раніше)Тека, з якої віджет завантажує власні зображення: тека images у ResourcesPath, без початкового /.
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",           // без початкового '/': переглядач додає його ("/doconut" стало б //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Не вдалося зберегти анотації.
onAnnClosednoneІнтерфейс анотацій закрито.

Тримайте зворотні виклики швидкими; надсилайте телеметрію асинхронно і не блокуйте рендеринг сторінки.

Кожен з цих параметрів є властивістю у об’єкті ініціалізації. Попередній переглядач шукав глобальні функції, імена яких формувалися з ідентифікатора контейнера — на сторінці з <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 має вказувати цю гілку без початкового / ('doconut', а не '/doconut': переглядач додає слеш, і //doconut/... — це запит до іншого хоста). Референтний застосунок зберігає історичну форму запиту DocImage.axd на гілці MapWhen і тому встановлює BasePath: '/'.
  • DoconutOptions.ResourcesPath — це маршрут вбудованих ресурсів.
  • ResPath зазвичай вказує на підпапку images без початкового / — 'doconut-res/images' з префіксом за замовчуванням. Порожній ResPath був правильним у попередній бібліотеці, де ресурси бралися з кореня застосунку; тут це некоректно і призводить до помилки без повідомлення.
  • ExtractHyperlinks має бути ввімкнено у конфігурації формату сервера, перш ніж showHyperlinks зможе щось відобразити.

Чи була ця сторінка корисною?