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 se passe pour chaque image de page à chaque requête vers DocImage.axd). 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. Visionneurs personnalisés d'abord. Tout ce que vous avez enregistré avec DoconutOptions.RegisterViewer(extension, factory, defaultConfig?) l'emporte sur tous les 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é.
  3. Formats uniquement via plugin. Certaines extensions n'ont aucun visionneur intégré — DICOM (.dcm, .ima) n'existe que via le plugin DICOM. En ouvrir un sans la capacité requise génère :
text
LicenseException: This document type requires the 'Dicom' plugin license.

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

Après la résolution, la configuration est fixé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 est rendu 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é contient du texte réel, ainsi la recherche plein texte obtient des surlignages natifs exacts ; le pipeline active AllowSearch et AllowCopy pour le PDF redirigé, puisque la conversion est invisible pour l'utilisateur.

Par défaut, XPS et MHT utilisent le chemin de redirection. Une projection en PDF offre une recherche native pour des formats tels que HTML et Microsoft Project. Si le PDF résultant contient des images sans couche de texte, ces pixels ne peuvent pas être recherchés.

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

Étape 2 — Le pipeline d'images de page

Chaque requête de page vers DocImage.axd exécute 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 (pas de licence, licence temporaire ou d'abonnement expirée, domaine invalide, version du build hors des versions de licence) et à partir de DocOptions.Watermark pour votre propre texte. Un site sous licence 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 et verticaux) est stocké dans la session et appliqué à chaque rendu ultérieur de cette page.
  • Échelle — les miniatures et les niveaux de zoom sont produits en redimensionnant la page rendue à la taille demandée.
  • Incrustation d'annotation — les annotations enregistrées sont dessinées sur le bitmap, ainsi les exportations et les images de page les affichent.
  • Encodage — le résultat est encodé en PNG et écrit directement dans la réponse.

Les erreurs à l'intérieur du gestionnaire sont renvoyées sous forme d'images d'erreur PNG (texte rouge sur fond blanc) avec le statut 200, plutôt que comme 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 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 = la valeur par défaut du format) est le principal réglage de qualité et de mémoire ; la valeur par défaut de chaque format est listée dans Format Configs.

Sur un nœud unique, les sessions et les pages mises en cache résident dans la mémoire du processus de travail. Un recyclage du pool d'applications — planifié, ou déclenché par une modification du Web.config ou un délai d'inactivité — supprime chaque session de document ouverte, et le widget affiche alors Document session not found. Please re-open document. En mode distribué (voir Sessions & Security), une session est reconstruite à partir du stockage partagé.

Où ajuster quoi

Ce que vous voulezAjuster
Pages plus nettesImageResolution sur la configuration du format
Recherche de texte précise sur HTML, EPUB, email, MHT ou MPPDefaultRender = false sur la configuration du format
Moins de mémoire sur les documents volumineuxCachePages = false, et fermez les sessions explicitement
Votre propre tampon sur chaque pageDocOptions.Watermark

Cette page était-elle utile ?