Prohlížeč
Hlavní třída prohlížeče dokumentů
Viewer (namespace Doconut) je veřejný vstupní bod pro otevírání dokumentů z Razor stránek, MVC kontrolerů, Blazor komponent nebo minimálních API. Je sealed, registrován jako transient služba pomocí AddDoconut(), a je získáván pomocí injekce konstruktoru — nikdy jej neinstanciujte přímo.
Předchozí knihovna .NET Standard poskytovala veřejný konstruktor přijímající mezipaměť paměti, přístup k HTTP kontextu a jednu nebo více cest k licencím. Tento konstruktor byl odstraněn; graf služeb poskytuje tyto závislosti.
Viewer neuchovává žádný stav na požadavek a úmyslně neimplementuje IDisposable: relace dokumentů žijí nezávisle v cache relací, takže uvolnění služby by nikdy neodstranilo otevřený dokument (viz Základní koncepty → Jak funguje Viewer).
OpenDocumentAsync
Otevře dokument a vrátí token relace, který klientský widget používá pro všechny následné požadavky. Každé otevření je asynchronní — neexistuje synchronní OpenDocument.
| Přetížení | Použít když |
|---|---|
Task<string> OpenDocumentAsync(string filePath, DocOptions? options = null, CancellationToken ct = default) | Otevření z disku s automatickou detekcí formátu a výchozím nastavením formátu |
Task<string> OpenDocumentAsync(string filePath, BaseConfig? config, DocOptions? options = null, CancellationToken ct = default) | Potřebujete nastavení vykreslování pro každý formát (PdfConfig, WordConfig, …) |
Task<string> OpenDocumentAsync(Stream stream, FileInfo fileInfo, BaseConfig? config = null, DocOptions? options = null, CancellationToken ct = default) | Dokument není soubor na disku (nahrání, databáze, blob). fileInfo musí obsahovat správnou příponu — řídí detekci formátu |
// Simple open
string token = await viewer.OpenDocumentAsync(path);
// With per-format config and options
token = await viewer.OpenDocumentAsync(
path,
new PdfConfig { AllowSearch = true, AllowCopy = true },
new DocOptions { TimeOut = 30 });
// From an upload
await using var ms = new MemoryStream();
await file.CopyToAsync(ms);
ms.Position = 0;
token = await viewer.OpenDocumentAsync(ms, new FileInfo(file.FileName));Exceptions to handle:
LicenseException— nalezená licence je odmítnuta (zpráva obsahuje důvod odmítnutí), nebo formát vyžaduje plugin, který již není poskytován. Vypršení kalendáře bez zprávy o odmítnutí vede k vykreslování s vodoznakem místo vyhození výjimky.FormatNotSupportedException—Document format '<extension>' is not supported.InvalidDataException— obsah souboru je poškozený nebo neodpovídá jeho příponě.
CloseDocument
void CloseDocument(string token)Odstraní relaci z cache (okamžitě uvolní dokumentový engine), smaže bezpečnostní značku a odvolá přístupové oprávnění. Volitelné — klouzavé vypršení provádí stejný úklid — ale je doporučeno pro velké dokumenty.
GetPageCount
int GetPageCount(string token)Celkový počet stránek otevřené relace. Vyvolá výjimku, pokud je token neznámý nebo vypršel.
Capability flags
| Člen | Význam |
|---|---|
bool IsSearchEnabled | Aktuální licence poskytuje Search |
bool IsAnnotationEnabled | Aktuální licence poskytuje Annotation |
Použijte je v Razor pohledu k vykreslení licencovaného pásu Ribbon pouze když server jej skutečně poskytne — viz Rychlý start.
DocOptions
Možnosti nezávislé na formátu, platné pro každé otevření (namespace Doconut):
| Typ | Vlastnost | Výchozí | Popis |
|---|---|---|---|
string | Password | "" | Heslo pro chráněné dokumenty (automaticky zkopírováno do konfigurace formátu). |
int | ImageResolution | 0 | Zastaralé. Uchováváno jen pro kompatibilitu — místo toho nastavte ImageResolution v konfiguraci formátu. |
string | Watermark | "" | Vlastní text vodoznaku vykreslený na stránkách. Formát řetězce: "^Text~Color~FontSize~FontName~Opacity~Angle", např. "^Sample Copy~Red~24~Verdana~80~-45". |
int | TimeOut | 60 | Klouzavé vypršení relace v minutách. |
bool | IsSecured | true | V současnosti nevyžadováno — rezervováno. Vazba tokenu je řízena globálně pomocí DoconutOptions.UnsafeMode (viz Základní koncepty → Relace a zabezpečení). |
Třída také poskytuje specializované vlastnosti, které jsou úmyslně mimo běžný jednojádrový tok prohlížení:
| Typ | Vlastnost | Výchozí | Popis |
|---|---|---|---|
bool | IsWebFarm | false | Označuje operaci otevření jako scénář sdíleného úložiště. Všimněte si zápisu — předchozí knihovna používala IsWebfarm. |
string | WebFarmPath | "" | Sdílená cesta používaná tímto pracovním postupem. Dříve pojmenováno WebfarmPath. Prázdná v běžném jednojádrovém prohlížeči a není potřeba na cestě publikování popsané v Distribuovaná nasazení. |
bool | EditMode | false | Rezervováno pro samostatně distribuovaný editační workflow; ponechte false pro standardní prohlížeč. |
Vlastní vodoznak
DocOptions.Watermark používá šest polí oddělených vlnkou. Volitelný úvodní ^ požaduje rozložení po všech rozích:
^Text~Color~FontSize~FontName~Opacity~Anglestring token = await viewer.OpenDocumentAsync(
path,
new PdfConfig(),
new DocOptions
{
Watermark = "^Confidential~Red~24~Verdana~80~-45",
TimeOut = 30
});| Pole | Příklad | Význam |
|---|---|---|
Leading ^ | ^ | Volitelný rozložení po všech rozích. Bez něj se používá běžné umístění vodoznaku. |
| Text | Confidential | Text vykreslený na každé stránce. Nesmí být prázdný. |
| Color | Red | Pojmenovaná barva, kterou rozumí vykreslovací vrstva. |
| FontSize | 24 | Velikost písma; neplatný číselný vstup se vrátí k výchozímu nastavení vykreslovače. |
| FontName | Verdana | Požadovaná rodina písma. Ujistěte se, že je nainstalována v prostředí nasazení. |
| Opacity | 80 | Hodnota bajtu od 0 do 255. Musí být úspěšně parsována. |
| Angle | -45 | Úhel otáčení ve stupních; neplatný číselný vstup se vrátí k výchozímu. |
Analyzátor očekává přesně šest polí po volitelném ^. Neplatná definice je nahrazena viditelným záložním Invalid Watermark z SDK místo toho, aby tiše zmizela.
Rozhodnutí o licenci
| Stav licence | Poskytnutá vlastní hodnota | Vykreslený výsledek |
|---|---|---|
| Platná placená licence pro prohlížeč | Ne | Čistá stránka |
| Platná placená licence pro prohlížeč | Ano | Vlastní vodoznak |
| Aktivní dočasná/demo základní verze prohlížeče | Ne | Čistá stránka základního prohlížeče |
| Aktivní dočasná/demo základní verze prohlížeče | Ano | Vlastní vodoznak, pokud se použije čistá cesta základního prohlížeče |
| Chybějící, odmítnutá, vypršená, nesprávná verze nebo licence s neplatnou doménou | Libovolná | Vynucovací/evaluační vodoznak; vlastní hodnota jej nepřepíše |
| Vykreslování pluginu podle evaluačních pravidel | Libovolná | Evaluační vodoznak |
Stejné rozhodnutí se aplikuje na poskytované obrázky stránek a exporty anotací. Výstup animovaného GIFu je označován snímek po snímku. Vlastní vodoznak je tedy licencovanou funkcí aplikace, nikoli způsobem, jak nahradit nebo potlačit evaluační vodoznak.
API anotací
Načítání a export anotací na straně serveru. Kompletní průvodce je v Průvodcích → Anotace; zde je přehled:
| Člen | Účel |
|---|---|
AnnotationManager GetAnnotationManager(string token) | Správce svázaný s rozměry stránky otevřené relace |
AnnotationManager GetAnnotationManager(string token, int pageWidth, int pageHeight) | Správce s explicitními rozměry stránky |
AnnotationManager GetAnnotationManager(int pageWidth, int pageHeight) | Správce nezávislý na relaci |
void LoadAnnotationData(string token, AnnotationManager manager) | Načíst anotace vytvořené v C# do relace |
void LoadAnnotationData(string token, string annotationData) | Načíst anotace z kódovaného page/Base64 obálky vrácené metodou AnnotationManager.GetAnnotationData() |
void LoadAnnotationXML(string token, XmlDocument annotationXml) | Načíst anotace z XML |
XmlDocument GetAnnotationXML(string token) | Exportovat anotace relace jako XML |
Task<byte[]> ExportAnnotationsToPdfAsync(string token, int zoom = 100, CancellationToken ct = default) | PDF s vloženými anotacemi |
Task<int> ExportAnnotationsToPngAsync(…) | PNG soubory s vloženými anotacemi |
Task<byte[]> ExportAnnotationsToPngZipAsync(string token, int zoom = 100, CancellationToken ct = default) | ZIP soubor s PNG pro každou stránku s vloženými anotacemi |
Každý z nich vyžaduje token relace. Forma GetAnnotationManager(pageWidth, pageHeight) z předchozí knihovny, která nevyžaduje relaci, přežívá pro vytváření anotací mimo relaci, ale jejich načtení stále vyžaduje token.
DICOM metadata
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)Metoda je k dispozici pro sladění API, ale tento balíček nemůže poskytovat technické DICOM značky: čtečka metadat je distribuována pouze ve verzi .NET 8. Vrací null pro DICOM i ne-DICOM relace; v DICOM relaci také jednorázově zapíše varování vysvětlující omezení platformy. Vykreslování stránek, snímků a animací zůstává podporováno.
Pomocníci zdrojů — ReferenceCss / ReferenceScripts
Vygenerujte značky <link>/<script> pro vložené zdroje poskytované funkcí UseDoconutResources(), ve správném pořadí závislostí. Balíčky pro funkce omezené licencí, jako je vyhledávání a anotace, jsou generovány pouze když licence umožňuje jejich použití, aby uživatelské rozhraní klienta odpovídalo chování serveru.
string ReferenceCss(CssConfig? config = null) // null → Bootstrap + viewer + search + annotation
string ReferenceScripts(ScriptConfig? config = null)CssConfig příznaky: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss (omezené vyhledáváním), IncludeAnnotationCss (omezené anotací).
ScriptConfig příznaky: IncludeJQuery (vyžadováno všemi ostatními), IncludeBootstrap, IncludeViewerScripts (jádro: docViewer.js + splitter + odkazy), IncludeSearchScripts a IncludeSearchBar (omezené vyhledáváním), IncludeAnnotationScripts a IncludeAnnotationBar (omezené anotací).
@inject Doconut.Viewer Viewer
@Html.Raw(Viewer.ReferenceCss(new CssConfig { IncludeBootstrapCss = true, IncludeViewerCss = true }))
@Html.Raw(Viewer.ReferenceScripts(new ScriptConfig { IncludeJQuery = true, IncludeViewerScripts = true }))Tito pomocníci jsou podporovaným způsobem, jak doručovat zdroje prohlížeče. Aplikace, které zkopírovaly docViewer.js, documentLinks.js a docViewer.UI.js do wwwroot, by měly tyto kopie odstranit, jakmile se stránka vykreslí pomocí vygenerovaných značek.
Byla tato stránka užitečná?