Rurociąg renderowania

Od dokumentu do obrazów stron

Pomiędzy OpenDocumentAsync a PNG, który dociera do przeglądarki, istnieją dwa odrębne etapy: rozwiązywanie podglądu (który silnik ładuje dokument, ustalane raz przy otwarciu) i przetwarzanie stron (co dzieje się z każdym obrazem strony przy każdym żądaniu do DocImage.axd). Znajomość obu wyjaśnia, dlaczego format renderuje się w określony sposób — oraz co naprawdę przełącza DefaultRender.

Etap 1 — Rozwiązywanie podglądu formatu

Fabryka mapuje rozszerzenie pliku na podgląd poprzez katalog formatów, z trzema poziomami priorytetu:

  1. Własne podglądy najpierw. Wszystko, co zarejestrowałeś przy pomocy DoconutOptions.RegisterViewer(extension, factory, defaultConfig?), ma pierwszeństwo przed wszystkimi wbudowanymi.
  2. Wbudowane podglądy rodzinne. Katalog mapuje każde rozszerzenie możliwe do podglądu na rodzinę podglądu — Word, Excel, PowerPoint, Pdf, Cad, Dgn, Image, Tiff, Psd, Email, Visio, Project, Xps, Epub, Txt, Html, Mht, Dcn — każda z własnym adapterem silnika. Jeśli licencjonowana wtyczka dostarcza podgląd dla tego samego rozszerzenia, podgląd wtyczki zastępuje wbudowany.
  3. Formaty tylko wtyczkowe. Niektóre rozszerzenia nie mają w ogóle wbudowanego podglądu — DICOM (.dcm, .ima) istnieje wyłącznie poprzez wtyczkę DICOM. Otwarcie takiego pliku bez wymaganego uprawnienia powoduje wyjątek:
text
LicenseException: This document type requires the 'Dicom' plugin license.

Rozszerzenie, dla którego żaden podgląd nie jest dostępny, powoduje FormatNotSupportedException.

Po rozwiązaniu konfiguracja zostaje ustalona: twój explicite podany obiekt konfiguracji, jeśli go przekazałeś, w przeciwnym razie domyślna konfiguracja formatu z katalogu. DocOptions.Password jest kopiowane do konfiguracji dla dokumentów zabezpieczonych.

Etap 1b — Tryb przekierowania (DefaultRender = false)

Większość konfiguracji per-format udostępnia flagę DefaultRender. Wybiera ona pomiędzy dwiema zasadniczo różnymi ścieżkami:

  • DefaultRender = true — dokument renderuje się natywnie, bezpośrednio do obrazów stron.
  • DefaultRender = false — dokument jest najpierw konwertowany do PDF w pamięci, silnik źródłowy jest zwalniany, a podgląd PDF przejmuje kontrolę. Wygenerowany PDF zawiera prawdziwy tekst, więc wyszukiwanie pełnotekstowe uzyskuje dokładne natywne podświetlenia; rurociąg włącza AllowSearch i AllowCopy dla przekierowanego PDF, ponieważ konwersja jest niewidoczna dla użytkownika.

XPS oraz MHT domyślnie używają ścieżki przekierowania. Projekcja PDF zapewnia natywne wyszukiwanie dla formatów takich jak HTML i Microsoft Project. Jeśli wygenerowany PDF zawiera obrazy bez warstwy tekstowej, te piksele nie mogą być przeszukiwane.

Używaj trybu przekierowania, gdy potrzebujesz przeszukiwalnej projekcji zawierającej tekst — kosztem wstępnej konwersji przy otwieraniu dokumentu.

Etap 2 — Rurociąg obrazów stron

Każde żądanie strony do DocImage.axd wykonuje stałą sekwencję:

text
raw page PNG → watermark → rotate/flip → scale → annotation burn → PNG to the response
  • Watermark — stosowany w zależności od stanu licencji (brak licencji, wygasła licencja tymczasowa lub subskrypcyjna, nieprawidłowa domena, kompilacja spoza wersji licencji) oraz z DocOptions.Watermark dla własnego tekstu. Licencjonowana strona bez własnego znaku wodnego pomija ten krok.
  • Rotate/flip — stan per-strona ustawiany przez użytkownika w widżecie (90°/180°/270°, odbicia poziome i pionowe) jest przechowywany w sesji i stosowany przy każdym kolejnym renderowaniu tej strony.
  • Scale — miniatury i poziomy przybliżenia są tworzone przez skalowanie wyrenderowanej strony do żądanego rozmiaru.
  • Annotation burn — zapisane adnotacje są rysowane na bitmapie, więc eksporty i obrazy stron je wyświetlają.
  • Encoding — wynik jest kodowany jako PNG i zapisywany bezpośrednio w odpowiedzi.

Błędy wewnątrz obsługi są zwracane jako obrazy PNG z błędem (czerwony tekst na białym tle) z kodem statusu 200, zamiast stron błędów HTTP, aby widżet mógł je wyświetlić w obszarze strony.

Buforowanie stron

BaseConfig.CachePages (domyślnie true) przechowuje wyrenderowane obrazy stron w pamięci przez cały czas trwania sesji dokumentu, więc ponowne odwiedzenie strony nie powoduje ponownego renderowania. BaseConfig.ImageResolution (25–300 DPI, 0 = domyślne dla formatu) jest głównym ustawieniem jakości i zużycia pamięci; domyślne wartości dla każdego formatu są wymienione w Format Configs.

Na pojedynczym węźle sesje i buforowane strony znajdują się w pamięci procesu roboczego. Recykling puli aplikacji — zaplanowany lub wywołany edycją Web.config lub upływem czasu bezczynności — usuwa wszystkie otwarte sesje dokumentów, a widżet wyświetla wtedy komunikat Document session not found. Please re-open document. W trybie rozproszonym (zobacz Sessions & Security) sesja jest odtwarzana ze wspólnego magazynu.

Gdzie dostroić co

ChceszDostrój
Ostrość stronImageResolution w konfiguracji formatu
Dokładne wyszukiwanie tekstu w HTML, EPUB, email, MHT lub MPPDefaultRender = false w konfiguracji formatu
Mniejsze zużycie pamięci przy dużych dokumentachCachePages = false i zamykanie sesji explicite
Własny stempel na każdej stronieDocOptions.Watermark

Czy ta strona była pomocna?