Pipeline de rendu

Du document aux images de page

Entre OpenDocumentAsync et le PNG qui atteint le navigateur, il y a deux étapes distinctes : résolution du visionneur (quel moteur charge le document, décidé une fois par ouverture) et traitement de la page (ce qui arrive à chaque image de page à chaque requête). Connaître les deux explique pourquoi un format s'affiche de telle manière — et ce que DefaultRender change réellement.

Étape 1 — Résolution du visionneur de format

La fabrique associe l'extension de fichier à un visionneur via le catalogue de formats, avec trois niveaux de priorité :

  1. Les visionneurs personnalisés d'abord. Tout ce que vous avez enregistré avec DoconutOptions.RegisterViewer(extension, factory, defaultConfig?) l'emporte sur tous les visionneurs intégrés.
  2. Visionneurs de famille intégrés. Le catalogue associe chaque extension affichable à une famille de visionneurs — Word, Excel, PowerPoint, Pdf, Cad, Dgn, Image, Tiff, Psd, Email, Visio, Project, Xps, Epub, Txt, Html, Mht, Dcn — chacune avec son propre adaptateur de moteur. Si un plugin sous licence fournit un visionneur pour la même extension, le visionneur du plugin remplace celui intégré. AddDoconut() valide les droits des plugins enregistrés au démarrage ; le recours du fabrique au visionneur intégré est une règle défensive d'exécution.
  3. Formats uniquement via plugin. Certaines extensions n'ont aucun visionneur intégré — DICOM (.dcm) n'existe que via le plugin DICOM. En en ouvrant un sans la capacité requise, une exception est levée :
text
LicenseException: This document type requires the 'Dicom' plugin license.

Une extension pour laquelle aucun visionneur ne se revendique lève :

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

Après la résolution, la configuration est déterminée : votre objet de configuration explicite si vous en avez fourni un, sinon la configuration par défaut du format provenant du catalogue. DocOptions.Password est copié dans la configuration pour les documents protégés.

Étape 1b — Mode de redirection (DefaultRender = false)

La plupart des configurations par format exposent un drapeau DefaultRender. Il sélectionne entre deux chemins fondamentalement différents :

  • DefaultRender = true — le document se rend nativement, directement en images de page.
  • DefaultRender = false — le document est d'abord converti en PDF en mémoire, le moteur source est libéré, et un visionneur PDF prend le relais. Le PDF généré intègre du texte réel, ainsi la recherche plein texte obtient des surlignages natifs précis au pixel ; le pipeline force AllowSearch et AllowCopy activés pour le PDF redirigé puisque la conversion est invisible pour l'utilisateur.

XPS et le paramètre par défaut du catalogue pour MHT utilisent le chemin de redirection. Une projection PDF peut offrir une recherche native pour des formats tels que HTML et Microsoft Project. Si le PDF résultant contient des images sans couche de texte, le visionneur standard ne peut pas rechercher ces pixels.

Utilisez le mode de redirection lorsque vous avez besoin d'une projection PDF contenant du texte — au prix d'une conversion initiale lors de l'ouverture du document.

Étape 2 — Le pipeline d'images de page

Les pages rendues sont traitées à chaque requête selon une séquence fixe :

text
raw page PNG → watermark → rotate/flip → scale → annotation burn → PNG to the response
  • Filigrane — appliqué à partir de l'état de licence (licence manquante, temporaire ou d'abonnement expirée, domaine invalide, mauvaise version) et de DocOptions.Watermark pour votre texte personnalisé. Une application correctement licenciée — ou une licence Temporaire active — sans filigrane personnalisé saute cette étape.
  • Rotation/retournement — l'état par page que l'utilisateur définit dans le widget (90°/180°/270°, retournements horizontaux/verticaux) est stocké dans la session et appliqué à chaque rendu ultérieur de cette page.
  • Échelle — les miniatures et niveaux de zoom sont produits en redimensionnant la page rendue à la taille cible demandée ; 0 signifie servir à la taille originale.
  • Gravure d'annotation — les annotations enregistrées sont dessinées sur le bitmap afin que les exportations et images de page les affichent.
  • Encodage — le résultat est encodé en PNG en utilisant des flux mémoire mis en pool et écrit directement dans la réponse HTTP.

Les erreurs à l'intérieur du middleware sont renvoyées sous forme d'images d'erreur PNG (texte rouge sur fond blanc) plutôt que des pages d'erreur HTTP, afin que le widget puisse les afficher dans la zone de la page.

Mise en cache des pages

BaseConfig.CachePages (par défaut true) conserve les images de pages rendues en mémoire pendant toute la durée de la session du document, de sorte que revisiter une page ne la rend pas à nouveau. BaseConfig.ImageResolution (25–300 DPI, 0 = défaut du format) est le principal réglage qualité/mémoire ; le défaut de chaque format est documenté sur sa page de configuration.

Où ajuster quoi

Ce que vous voulezRéglage
Pages plus nettesImageResolution dans la configuration du format
Recherche de texte précise sur HTML/EPUB/email/MHT/MPPDefaultRender = false dans la configuration du format
Moins de mémoire sur de très gros documentsCachePages = false, fermer les sessions explicitement
Votre propre tampon sur chaque pageDocOptions.Watermark

Cette page vous a-t-elle été utile ?