Renderingspipeline

Från dokument till sidbilder

Mellan OpenDocumentAsync och PNG-filen som når webbläsaren finns två tydliga steg: visningsupplösning (vilken motor som laddar dokumentet, bestäms en gång per öppning) och sidbearbetning (vad som händer med varje sidbild vid varje begäran till DocImage.axd). Att känna till båda förklarar varför ett format renderas på ett visst sätt — och vad DefaultRender egentligen styr.

Steg 1 — Upplösning av formatvisaren

Fabriken mappar filändelsen till en visare via formatkatalogen, med tre nivåer av prioritet:

  1. Anpassade visare först. Allt du registrerat med DoconutOptions.RegisterViewer(extension, factory, defaultConfig?) har företräde framför alla inbyggda.
  2. Inbyggda familjevisare. Katalogen mappar varje visningsbar filändelse till en visarfamilj — Word, Excel, PowerPoint, Pdf, Cad, Dgn, Image, Tiff, Psd, Email, Visio, Project, Xps, Epub, Txt, Html, Mht, Dcn — var och en med sin egen motoradapter. Om ett licensierat plugin bidrar med en visare för samma filändelse ersätter plugin‑visaren den inbyggda.
  3. Endast plugin‑format. Vissa filändelser har ingen inbyggd visare alls — DICOM (.dcm, .ima) finns endast via DICOM‑pluginet. Att öppna en utan den nödvändiga funktionen kastar:
text
LicenseException: This document type requires the 'Dicom' plugin license.

En filändelse som ingen visare hanterar kastar FormatNotSupportedException.

Efter upplösning är konfigurationen fastställd: ditt explicita konfigurationsobjekt om du skickade med ett, annars formatets standardkonfiguration från katalogen. DocOptions.Password kopieras in i konfigurationen för skyddade dokument.

Steg 1b — Omdirigeringsläge (DefaultRender = false)

De flesta per‑formatkonfigurationer exponerar en DefaultRender‑flagga. Den väljer mellan två grundläggande olika vägar:

  • DefaultRender = true — dokumentet renderas nativt, direkt till sidbilder.
  • DefaultRender = false — dokumentet konverteras först till en PDF i minnet, källmotorn släpps och en PDF‑visare tar över. Den genererade PDF‑filen innehåller riktig text, så fulltextsökning får exakta inhemska markeringar; pipeline aktiverar AllowSearch och AllowCopy för den omdirigerade PDF‑filen, eftersom konverteringen är osynlig för användaren.

XPS och MHT använder som standard omdirigeringsvägen. En PDF‑projektion ger inbyggd sökning för format som HTML och Microsoft Project. Om den resulterande PDF‑filen innehåller bilder utan ett textlager kan dessa pixlar inte sökas.

Använd omdirigeringsläge när du behöver en sökbar, textbärande projektion — på bekostnad av en initial konvertering när dokumentet öppnas.

Steg 2 — Sid‑bild‑pipeline

Varje sidbegäran till DocImage.axd kör en fast sekvens:

text
raw page PNG → watermark → rotate/flip → scale → annotation burn → PNG to the response
  • Vattenstämpel — tillämpas utifrån licenstillståndet (ingen licens, en utgången tillfällig eller prenumerationslicens, en ogiltig domän, en build utanför licensens versioner) och från DocOptions.Watermark för din egen text. En licensierad webbplats utan anpassad vattenstämpel hoppar över detta steg.
  • Rotera/vänd — per‑sidostatus som användaren ställer in i widgeten (90°/180°/270°, horisontella och vertikala vändningar) lagras i sessionen och tillämpas på varje efterföljande rendering av den sidan.
  • Skala — miniatyrer och zoomnivåer skapas genom att skala den renderade sidan till den begärda storleken.
  • Annotation bränning — sparade annotationer ritas på bitmapen, så export och sidbilder visar dem.
  • Kodning — resultatet kodas som PNG och skrivs direkt till svaret.

Fel i hanteraren returneras som PNG‑felbilder (röd text på vit bakgrund) med status 200, snarare än som HTTP‑felssidor, så att widgeten kan visa dem i sidområdet.

Sidcachning

BaseConfig.CachePages (standard true) behåller renderade sidbilder i minnet under hela dokumentsessionens livstid, så att återbesök av en sida inte renderas igen. BaseConfig.ImageResolution (25–300 DPI, 0 = formatets standard) är den huvudsakliga kvalitets‑ och minnesinställningen; varje formats standard listas i Formatkonfigurationer.

På en enskild nod lever sessioner och cachade sidor i arbetsprocessens minne. En återställning av applikationspoolen — schemalagd eller utlösts av en Web.config‑ändring eller en inaktivitetstid — släpper alla öppna dokumentsessioner, och widgeten visar då Document session not found. Please re-open document. I distribuerat läge (se Sessioner & Säkerhet) byggs en session om från den delade lagringen istället.

Var du kan finjustera vad

Vad du villJustera
Skarpare sidorImageResolution i formatkonfigurationen
Noggrann textsökning på HTML, EPUB, e‑post, MHT eller MPPDefaultRender = false i formatkonfigurationen
Lägre minnesanvändning för stora dokumentCachePages = false, och stäng sessioner explicit
Egen stämpel på varje sidaDocOptions.Watermark

Var den här sidan hjälpsam?