Renderingspipeline
Från dokument till sidbilder
Mellan OpenDocumentAsync och PNG-filen som når webbläsaren finns två distinkta 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). Att känna till båda förklarar varför ett format renderas på det sätt det gör — och vad DefaultRender egentligen byter.
Steg 1 — Upplösning av formatvisare
Fabriken mappar filändelsen till en visare via formatkatalogen, med tre nivåer av prioritet:
- Anpassade visare först. Allt du registrerade med
DoconutOptions.RegisterViewer(extension, factory, defaultConfig?)har företräde framför alla inbyggda. - 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.
AddDoconut()validerar registrerade plugin‑behörigheter vid start; fabriksens återgång till den inbyggda visaren är en defensiv körningsregel. - Endast‑plugin‑format. Vissa filändelser har ingen inbyggd visare alls — DICOM (
.dcm) finns endast via DICOM‑pluginet. Att öppna en utan den erforderliga funktionen kastar:
LicenseException: This document type requires the 'Dicom' plugin license.En filändelse utan visare ger upphov till:
FormatNotSupportedException: Document format '<extension>' is not supported.Efter upplösning är konfigurationen fastställd: ditt explicita konfigurationsobjekt om du skickade 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 frigörs, och en PDF‑visare tar över. Den genererade PDF‑filen inbäddar riktig text, så fulltextsökning får pixel‑exakta inhemska markeringar; pipelinen tvingarAllowSearchochAllowCopyatt vara på för den omdirigerade PDF‑filen eftersom konverteringen är osynlig för användaren.
XPS och katalogens standard för MHT använder omdirigeringsvägen. En PDF‑projektion kan erbjuda inbyggd sökning för format som HTML och Microsoft Project. Om den resulterande PDF‑filen innehåller bilder utan ett textlager kan den standardvisaren inte söka i dessa pixlar.
Använd omdirigeringsläge när du behöver en PDF‑projektion med text — på bekostnad av en förhandskonvertering när dokumentet öppnas.
Steg 2 — Sidbildspipelinen
Renderade sidor bearbetas per begäran genom en fast sekvens:
raw page PNG → watermark → rotate/flip → scale → annotation burn → PNG to the response- Vattenstämpel — tillämpas utifrån licenstillståndet (saknad licens, utgången temporär eller prenumerationslicens, ogiltig domän, fel version) och från
DocOptions.Watermarkför din egen anpassade text. En korrekt licensierad app — eller en aktiv temporär licens — utan anpassad vattenstämpel hoppar över detta steg. - Rotera/vänd — per‑sidstatus som användaren ställer in i widgeten (90°/180°/270°, horisontella/vertikala vändningar) lagras i sessionen och tillämpas vid varje efterföljande rendering av den sidan.
- Skala — miniatyrer och zoomnivåer produceras genom att skala den renderade sidan till den begärda målstorleken;
0betyder att den levereras i originalstorlek. - Annotation burn — sparade annotationer ritas på bitmapen så export och sidbilder visar dem.
- Kodning — resultatet kodas till PNG med hjälp av poolade minnesströmmar och skrivs direkt till HTTP‑svaret.
Fel i middleware returneras som PNG‑felbilder (röd text på vit bakgrund) istället för HTTP‑felsidor, 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 ett återbesök av en sida inte renderas om. BaseConfig.ImageResolution (25–300 DPI, 0 = formatstandard) är den huvudsakliga kvalitet/minne‑reglaget; varje formats standard är dokumenterad på dess konfigurationssida.
Var du finjusterar vad
| Vad du vill | Justera |
|---|---|
| Skarpare sidor | ImageResolution i formatkonfigurationen |
| Noggrann textsökning på HTML/EPUB/e‑post/MHT/MPP | DefaultRender = false i formatkonfigurationen |
| Lägre minnesanvändning för stora dokument | CachePages = false, stäng sessioner explicit |
| Egen stämpel på varje sida | DocOptions.Watermark |
Var den här sidan till hjälp?