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 do konstruktoru — nikdy jej neinstanciujte přímo.
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 nemohlo ukončit 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šechna následná volání.
| Přetížení | Použijte když |
|---|---|
Task<string> OpenDocumentAsync(string filePath, DocOptions? options = null, CancellationToken ct = default) | Otevírání z disku s automatickou detekcí formátu a výchozí konfigurací formátu |
Task<string> OpenDocumentAsync(string filePath, BaseConfig? config, DocOptions? options = null, CancellationToken ct = default) | Potřebujete nastavení renderování pro konkrétní 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 (upload, databáze, blob). fileInfo musí nést 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));Výjimky, které je třeba ošetřit:
LicenseException— nalezená licence je odmítnuta (zpráva nese důvod odmítnutí), nebo formát vyžaduje plugin, který již není povolen. Vypršení kalendáře bez zprávy o odmítnutí vede k vodotiskovému vykreslení 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é — posuvná expirace provádí stejný úklid — ale je doporučena u velkých dokumentů.
GetPageCount
int GetPageCount(string token)Celkový počet stránek otevřené relace. Vyhodí výjimku, pokud je token neznámý nebo vypršelý.
DocOptions
Možnosti nezávislé na formátu při otevírání (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 pouze pro kompatibilitu — místo toho nastavte ImageResolution v konfiguraci formátu. |
string | Watermark | "" | Vlastní text vodotisku kreslený na vykreslených stránkách. Formát řetězce: "^Text~Color~FontSize~FontName~Opacity~Angle", např. "^Sample Copy~Red~24~Verdana~80~-45". |
int | TimeOut | 60 | Posuvná expirace relace v minutách. |
bool | IsSecured | true | Momentálně 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é vystavuje specializované vlastnosti, které jsou úmyslně mimo běžný jednojmenný tok prohlížení:
| Typ | Vlastnost | Výchozí | Popis |
|---|---|---|---|
bool | IsWebFarm | false | Označuje operaci otevření jako scénář web-farmy. Používejte pouze s odpovídající architekturou sdíleného úložiště/relací. |
string | WebFarmPath | "" | Sdílená cesta používaná ve specializovaném workflow web-farmy. Prázdná v normálním jednojmenném prohlížeči. |
bool | EditMode | false | Rezervováno pro samostatně distribuovaný workflow Editoru; nechte false pro standardní prohlížeč. |
Custom watermark
DocOptions.Watermark používá šest polí oddělených vlnkou. Volitelný úvodní znak ^ 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 |
|---|---|---|
Úvodní ^ | ^ | Volitelný layout po všech rozích. Bez něj se použije běžné umístění vodotisku. |
| Text | Confidential | Text vykreslený na každé stránce. Nesmí být prázdný. |
| Color | Red | Název barvy, který rozumí vykreslovací vrstva. |
| FontSize | 24 | Velikost písma; neplatný číselný vstup se vrátí k výchozímu nastavení rendereru. |
| 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í se úspěšně parsovat. |
| Angle | -45 | Úhel otočení ve stupních; neplatný číselný vstup se vrátí k výchozímu nastavení. |
Parser očekává přesně šest polí po volitelném ^. Neplatná definice je nahrazena viditelným Invalid Watermark fallbackem SDK místo tichého zmizení.
License decision
| Stav licence | Vlastní hodnota zadána | Výsledek |
|---|---|---|
| Platná placená licence pro prohlížeč | Ne | Čistá stránka |
| Platná placená licence pro prohlížeč | Ano | Vlastní vodotisk |
| Aktivní dočasná/Demo základní licence | Ne | Čistá stránka základního prohlížeče |
| Aktivní dočasná/Demo základní licence | Ano | Vlastní vodotisk, pokud se použije cesta čistého základního prohlížeče |
| Chybějící, odmítnutá, prošlá, špatná verze nebo licence s neplatnou doménou | Libovolná | Vynucený/evaluační vodotisk; vlastní hodnota jej nepřepíše |
| Pluginové renderování pod evaluačními pravidly | Libovolná | Evaluační vodotisk |
Stejný rozhodovací proces se aplikuje na servírované obrázky stránek a exporty anotací. Výstup animovaného GIFu je označován snímek po snímku. Vlastní vodotisk je tedy licencovanou funkcí aplikace, nikoli způsobem, jak nahradit nebo potlačit evaluační vodotisk.
Annotations API
Načítání a export anotací na straně serveru. Kompletní průvodce je v Guides → Annotations; rozhraní je následující:
| Člen | Účel |
|---|---|
AnnotationManager GetAnnotationManager(string token) | Správce vázaný na rozměry stránek 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čte anotace vytvořené v C# do relace |
void LoadAnnotationData(string token, string annotationData) | Načte anotace z kódovaného page/Base64 obalu vráceného metodou AnnotationManager.GetAnnotationData() |
void LoadAnnotationXML(string token, XmlDocument annotationXml) | Načte anotace z XML |
XmlDocument GetAnnotationXML(string token) | Exportuje anotace relace jako XML |
Task<byte[]> ExportAnnotationsToPdfAsync(string token, int zoom = 100, CancellationToken ct = default) | PDF s vypálenými anotacemi |
Task<int> ExportAnnotationsToPngAsync(…) | PNG soubory s vypálenými anotacemi |
Task<byte[]> ExportAnnotationsToPngZipAsync(string token, int zoom = 100, CancellationToken ct = default) | ZIP soubor s PNG stránkami a vypálenými anotacemi |
DICOM metadata
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)Vrací metadata DICOM tagů pro relace otevřené přes DICOM plugin; null pro nedICOMové dokumenty.
Resource helpers — ReferenceCss / ReferenceScripts
Vygeneruje <link>/<script> tagy pro vložené zdroje poskytované UseDoconutResources(), ve správném pořadí závislostí. Balíčky pro funkce pod licencí, jako je vyhledávání a anotace, jsou emitovány pouze když licence umožňuje, čímž se UI klienta udržuje v souladu se serverovým chováním.
string ReferenceCss(CssConfig? config = null) // null → Bootstrap + viewer + search + annotation
string ReferenceScripts(ScriptConfig? config = null)Příznaky CssConfig: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss (vyhledávání pod licencí), IncludeAnnotationCss (anotace pod licencí).
Příznaky ScriptConfig: IncludeJQuery (vyžadováno všemi ostatními), IncludeBootstrap, IncludeViewerScripts (core: docViewer.js + splitter + links), IncludeSearchScripts a IncludeSearchBar (vyhledávání pod licencí), IncludeAnnotationScripts a IncludeAnnotationBar (anotace pod licencí).
@inject Doconut.Viewer Viewer
@Html.Raw(Viewer.ReferenceCss(new CssConfig { IncludeBootstrapCss = true, IncludeViewerCss = true }))
@Html.Raw(Viewer.ReferenceScripts(new ScriptConfig { IncludeJQuery = true, IncludeViewerScripts = true }))Byla tato stránka užitečná?