Potok renderowania
Od dokumentu do obrazów stron
Między OpenDocumentAsync a PNG, które dociera do przeglądarki, istnieją dwa odrębne etapy: rozwiązywanie widoku (który silnik ładuje dokument, ustalane raz przy otwarciu) i przetwarzanie stron (co dzieje się z każdym obrazem strony przy każdym żądaniu). Znajomość obu wyjaśnia, dlaczego format renderuje się w określony sposób — oraz co naprawdę przełącza DefaultRender.
Etap 1 — Rozwiązywanie widoku formatu
Fabryka mapuje rozszerzenie pliku na widok przy użyciu katalogu formatów, z trzema poziomami priorytetu:
- Najpierw własne widoki. Wszystko, co zarejestrowałeś za pomocą
DoconutOptions.RegisterViewer(extension, factory, defaultConfig?), ma pierwszeństwo przed wszystkimi wbudowanymi. - Wbudowane widoki rodzinne. Katalog mapuje każde rozszerzenie możliwe do wyświetlenia na rodzinę widoków — 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 widok dla tego samego rozszerzenia, widok wtyczki zastępuje wbudowany.
AddDoconut()weryfikuje zarejestrowane uprawnienia wtyczek przy uruchomieniu; awaryjne przejście fabryki do wbudowanego widoku jest regułą obronną w czasie działania. - Formaty tylko wtyczkowe. Niektóre rozszerzenia nie mają w ogóle wbudowanego widoku — DICOM (
.dcm) istnieje wyłącznie poprzez wtyczkę DICOM. Otwarcie takiego bez wymaganego uprawnienia powoduje wyrzucenie:
LicenseException: This document type requires the 'Dicom' plugin license.Rozszerzenie, dla którego nie ma widoku, generuje:
FormatNotSupportedException: Document format '<extension>' is not supported.Po rozwiązaniu konfiguracja jest ustalona: twój explicite przekazany obiekt konfiguracji, jeśli go podałeś, w przeciwnym razie domyślna konfiguracja formatu z katalogu. DocOptions.Password jest kopiowane do konfiguracji dla chronionych dokumentów.
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 przejmuje go przeglądarka PDF. Wygenerowany PDF zawiera prawdziwy tekst, więc pełnotekstowe wyszukiwanie uzyskuje pikselowo dokładne natywne podświetlenia; pipeline wymusza włączoneAllowSearchiAllowCopydla przekierowanego PDF, ponieważ konwersja jest niewidoczna dla użytkownika.
XPS oraz domyślne ustawienie katalogu dla MHT używają ścieżki przekierowania. Projekcja PDF może zapewnić natywne wyszukiwanie dla formatów takich jak HTML i Microsoft Project. Jeśli powstały PDF zawiera obrazy bez warstwy tekstowej, standardowy widok nie może przeszukiwać tych pikseli.
Używaj trybu przekierowania, gdy potrzebujesz projekcji PDF zawierającej tekst — kosztem wstępnej konwersji przy otwieraniu dokumentu.
Etap 2 — Potok obrazów stron
Renderowane strony są przetwarzane przy każdym żądaniu według stałej sekwencji:
surowy PNG strony → znak wodny → obrót/odbicie → skalowanie → wypalanie adnotacji → PNG do odpowiedzi- Znak wodny — stosowany w zależności od stanu licencji (brak licencji, wygasła tymczasowa lub subskrypcyjna, nieprawidłowa domena, zła wersja) oraz z
DocOptions.Watermarkdla własnego tekstu. Aplikacja z prawidłową licencją — lub aktywną licencją tymczasową — bez własnego znaku wodnego pomija ten krok. - Obrót/odbicie — stan per‑strona ustawiony przez użytkownika w widżecie (90°/180°/270°, odbicia poziome/pionowe) jest przechowywany w sesji i stosowany przy każdym kolejnym renderowaniu tej strony.
- Skalowanie — miniatury i poziomy powiększenia są tworzone przez skalowanie renderowanej strony do żądanego rozmiaru docelowego;
0oznacza podanie w oryginalnym rozmiarze. - Wypalanie adnotacji — zapisane adnotacje są rysowane na bitmapie, tak aby eksporty i obrazy stron je wyświetlały.
- Kodowanie — wynik jest kodowany do PNG przy użyciu puli strumieni pamięci i zapisywany bezpośrednio w odpowiedzi HTTP.
Błędy w middleware są zwracane jako obrazy błędów PNG (czerwony tekst na białym tle) 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 renderowane obrazy stron w pamięci przez cały czas trwania sesji dokumentu, więc ponowne odwiedzenie strony nie powoduje jej ponownego renderowania. BaseConfig.ImageResolution (25–300 DPI, 0 = domyślne dla formatu) jest głównym pokrętłem jakości/pamięci; domyślne wartości każdego formatu są udokumentowane na jego stronie konfiguracji.
Gdzie dostroić co
| Co chcesz | Dostosuj |
|---|---|
| Ostrzejsze strony | ImageResolution w konfiguracji formatu |
| Dokładne wyszukiwanie tekstu w HTML/EPUB/e‑mail/MHT/MPP | DefaultRender = false w konfiguracji formatu |
| Mniejsze zużycie pamięci przy dużych dokumentach | CachePages = false, zamykaj sesje ręcznie |
| Własny znak na każdej stronie | DocOptions.Watermark |
Czy ta strona była pomocna?