Renderovací pipeline

Od dokumentu k obrázkům stránek

Mezi OpenDocumentAsync a PNG, která dorazí do prohlížeče, jsou dvě odlišné fáze: rozlišení prohlížeče (který engine načte dokument, rozhodnuto jednou při otevření) a zpracování stránky (co se děje s každým obrázkem stránky při každém požadavku na DocImage.axd). Znalost obou vysvětluje, proč se formát vykresluje tak, jak to dělá — a co DefaultRender ve skutečnosti přepíná.

Fáze 1 — Rozlišení prohlížeče formátu

Továrna mapuje příponu souboru na prohlížeč přes katalog formátů, se třemi úrovněmi precedence:

  1. Nejprve vlastní prohlížeče. Cokoliv, co jste zaregistrovali pomocí DoconutOptions.RegisterViewer(extension, factory, defaultConfig?), má přednost před všemi vestavěnými.
  2. Vestavěné prohlížeče rodiny. Katalog mapuje každou zobrazitelnou příponu na rodinu prohlížečů — Word, Excel, PowerPoint, Pdf, Cad, Dgn, Image, Tiff, Psd, Email, Visio, Project, Xps, Epub, Txt, Html, Mht, Dcn — každou s vlastním adaptérem engine. Pokud licencovaný plugin přidá prohlížeč pro stejnou příponu, pluginův prohlížeč nahradí vestavěný.
  3. Formáty pouze pro pluginy. Některé přípony nemají vůbec vestavěný prohlížeč — DICOM (.dcm, .ima) existuje jen prostřednictvím pluginu DICOM. Otevření takového souboru bez požadované schopnosti vyhodí:
text
LicenseException: This document type requires the 'Dicom' plugin license.

Přípona, kterou žádný prohlížeč neobsluhuje, vyvolá FormatNotSupportedException.

Po rozlišení je konfigurace ustavena: váš explicitní konfigurační objekt, pokud jste jej předali, jinak výchozí konfigurace formátu z katalogu. DocOptions.Password je zkopírováno do konfigurace pro chráněné dokumenty.

Fáze 1b — Režim přesměrování (DefaultRender = false)

Většina konfigurací na úrovni formátu vystavuje příznak DefaultRender. Ten vybírá mezi dvěma zásadně odlišnými cestami:

  • DefaultRender = true — dokument se vykresluje nativně, přímo na obrázky stránek.
  • DefaultRender = false — dokument se nejprve převede do PDF v paměti, zdrojový engine je uvolněn a převzetí přebírá PDF prohlížeč. Vygenerované PDF obsahuje skutečný text, takže full‑textové vyhledávání získá přesné nativní zvýraznění; pipeline zapíná AllowSearch a AllowCopy pro přesměrované PDF, protože konverze je pro uživatele neviditelná.

XPS a MHT jsou ve výchozím nastavení na přesměrovací cestě. Projekce do PDF poskytuje nativní vyhledávání pro formáty jako HTML a Microsoft Project. Pokud výsledné PDF obsahuje obrázky bez textové vrstvy, tyto pixely nelze prohledávat.

Použijte režim přesměrování, když potřebujete prohledávat text‑obsahující projekci — za cenu úvodní konverze při otevření dokumentu.

Fáze 2 — Pipeline obrázku stránky

Každý požadavek na stránku na DocImage.axd provádí pevně danou sekvenci:

text
raw page PNG → watermark → rotate/flip → scale → annotation burn → PNG to the response
  • Vodoznak — aplikován podle stavu licence (žádná licence, vypršená dočasná nebo předplatitelská licence, neplatná doména, build mimo verze licence) a z DocOptions.Watermark pro váš vlastní text. Licencovaný web bez vlastního vodoznaku tento krok přeskočí.
  • Rotace/otočení — stav na stránce, který uživatel nastaví ve widgetu (90°/180°/270°, horizontální a vertikální otáčení) je uložen v relaci a aplikován na každé další vykreslení té stránky.
  • Škálování — miniatury a úrovně zoomu jsou vytvořeny škálováním vykreslené stránky na požadovanou velikost.
  • Vypálení anotace — uložené anotace jsou nakresleny na bitmapu, takže exporty a obrázky stránek je zobrazí.
  • Kódování — výsledek je zakódován jako PNG a přímo zapsán do odpovědi.

Chyby uvnitř handleru jsou vráceny jako PNG chybové obrázky (červený text na bílém) se stavem 200, místo HTTP chybových stránek, takže widget je může zobrazit v oblasti stránky.

Cacheování stránek

BaseConfig.CachePages (výchozí true) uchovává vykreslené obrázky stránek v paměti po dobu životnosti relace dokumentu, takže opětovná návštěva stránky nevyvolá další vykreslení. BaseConfig.ImageResolution (25–300 DPI, 0 = výchozí formátu) je hlavní ovladač kvality a paměti; výchozí hodnoty každého formátu jsou uvedeny v Konfiguracích formátu.

Na jednom uzlu žijí relace a cachované stránky v paměti pracovního procesu. Recyklace aplikačního poolu — naplánovaná nebo vyvolaná úpravou Web.config či nečinností — zahodí každou otevřenou relaci dokumentu a widget pak zobrazí Document session not found. Please re-open document. V distribuovaném režimu (viz Relace a zabezpečení) je relace obnovena ze sdíleného úložiště.

Kde co ladit

Co chceteLadit
Ostřejší stránkyImageResolution v konfiguraci formátu
Přesné vyhledávání textu v HTML, EPUB, e‑mailu, MHT nebo MPPDefaultRender = false v konfiguraci formátu
Nižší paměťové nároky u obrovských dokumentůCachePages = false a explicitně ukončovat relace
Vlastní razítko na každé stránceDocOptions.Watermark

Byla tato stránka užitečná?