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). 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 — Rozpoznání prohlížeče formátu

Továrna mapuje příponu souboru na prohlížeč prostřednictvím katalogu 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 rodin. 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ždá s vlastním adaptérem engine. Pokud licencovaný plugin poskytne prohlížeč pro stejnou příponu, prohlížeč pluginu nahradí vestavěný. AddDoconut() ověřuje registrovaná oprávnění pluginů při spuštění; náhradní cesta továrny na vestavěný prohlížeč je obranné pravidlo za běhu.
  3. Formáty pouze pro pluginy. Některé přípony nemají vůbec vestavěný prohlížeč — DICOM (.dcm) existuje pouze prostřednictvím pluginu DICOM. Otevření takového souboru bez požadované schopnosti vyvolá výjimku:
text
LicenseException: This document type requires the 'Dicom' plugin license.

Rozšíření, pro které žádný prohlížeč neexistuje, vyvolá:

text
FormatNotSupportedException: Document format '<extension>' is not supported.

Po rozpoznání je konfigurace ustálená: 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 je nejprve převáděn do PDF v paměti, zdrojový engine je uvolněn a převzetý PDF prohlížeč. Vygenerované PDF obsahuje skutečný text, takže full‑textové vyhledávání získá pixelově přesné nativní zvýraznění; pipeline vynutí zapnutí AllowSearch a AllowCopy pro přesměrované PDF, protože konverze je pro uživatele neviditelná.

XPS a výchozí nastavení katalogu pro MHT používají cestu přesměrování. PDF projekce může poskytnout nativní vyhledávání pro formáty jako HTML a Microsoft Project. Pokud výsledné PDF obsahuje obrázky bez textové vrstvy, standardní prohlížeč nemůže vyhledávat v těchto pixelech.

Použijte režim přesměrování, když potřebujete PDF projekci s textem — za cenu předběžné konverze při otevření dokumentu.

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

Vykreslené stránky jsou zpracovávány při každém požadavku pomocí pevného pořadí:

text
raw page PNG → watermark → rotate/flip → scale → annotation burn → PNG to the response
  • Vodoznak — aplikován podle stavu licence (chybějící licence, vypršená dočasná nebo předplatná, neplatná doména, špatná verze) a z DocOptions.Watermark pro váš vlastní text. Správně licencovaná aplikace — nebo aktivní dočasná licence — bez vlastního vodoznaku tento krok přeskočí.
  • Otočení/obrácení — stav na stránce, který uživatel nastaví ve widgetu (90°/180°/270°, horizontální/vertikální převrácení), je uložen v relaci a aplikován při každém dalším vykreslení této stránky.
  • Škálování — náhledy a úrovně přiblížení jsou vytvořeny škálováním vykreslené stránky na požadovanou cílovou velikost; 0 znamená podávat v původní velikosti.
  • Vypálení anotací — uložené anotace jsou vykresleny na bitmapu, takže exporty a obrázky stránek je zobrazí.
  • Kódování — výsledek je zakódován do PNG pomocí sdílených paměťových streamů a zapsán přímo do HTTP odpovědi.

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

Cache stránek

BaseConfig.CachePages (výchozí true) uchovává vykreslené obrázky stránek v paměti po dobu trvání relace dokumentu, takže při opětovné návštěvě stránky není znovu vykreslována. BaseConfig.ImageResolution (25–300 DPI, 0 = výchozí formátu) je hlavní ovladač kvality/paměti; výchozí hodnota každého formátu je zdokumentována na jeho konfigurační stránce.

Kde co ladit

Co chceteLadit
Ostré stránkyImageResolution v konfiguraci formátu
Přesné vyhledávání textu v HTML/EPUB/email/MHT/MPPDefaultRender = false v konfiguraci formátu
Nižší paměťová náročnost u velkých dokumentůCachePages = false, explicitně uzavírejte relace
Vlastní razítko na každé stránceDocOptions.Watermark

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