Renderingspipeline

Från dokument till sidbilder

Mellan OpenDocumentAsync och PNG‑filen som når webbläsaren finns två distinkta steg: visarupplö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å ett visst sätt — och vad DefaultRender egentligen växlar.

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 registrerade 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. AddDoconut() validerar registrerade plugin‑entitlements vid start; fabriksens återgång till den inbyggda visaren är en defensiv körningsregel.
  3. Endast plugin‑format. Vissa filändelser har ingen inbyggd visare alls — DICOM (.dcm) finns endast via DICOM‑pluginet. Att öppna en utan den nödvändiga kapaciteten kastar:
text
LicenseException: This document type requires the 'Dicom' plugin license.

En filändelse utan visare ger upphov till:

text
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å fundamentalt 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 bäddar in riktig text, så fulltextsökning får pixel‑exakta nativa markeringar; pipelinen tvingar AllowSearch och AllowCopy att 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 ge 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:

text
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 prenumeration, ogiltig domän, fel version) och från DocOptions.Watermark fö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ända — 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 skapas genom att skala den renderade sidan till den begärda målstorleken; 0 betyder att den levereras i originalstorlek.
  • Inbränning av annotationer — sparade annotationer ritas på bitmapen så att 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‑felssidor, så att widgeten kan visa dem i sidområdet.

Sidcachning

BaseConfig.CachePages (standard true) behåller renderade sidbilder i minnet under hela dokumentsessionen, så att ett återbesök av en sida inte renderas om. BaseConfig.ImageResolution (25–300 DPI, 0 = formatstandard) är den huvudsakliga kvalitets-/minnesreglaget; varje formats standard är dokumenterad på dess konfigurationssida.

Var du finjusterar vad

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

Var den här sidan till hjälp?