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 získáván pomocí injekce konstruktoru — nikdy jej neinstanciujte přímo.
Viewer neobsahuje žádný stav specifický pro 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 Core Concepts → How the Viewer Works).
OpenDocumentAsync
Otevře dokument a vrátí token relace, který klientský widget používá pro všechny následné požadavky.
| 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 renderovací možnosti 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í nést správnou příponu — řídí detekci formátu |
// Jednoduché otevření
string token = await viewer.OpenDocumentAsync(path);
// S konfigurací a možnostmi pro každý formát
token = await viewer.OpenDocumentAsync(
path,
new PdfConfig { AllowSearch = true, AllowCopy = true },
new DocOptions { TimeOut = 30 });
// Z nahrání
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 renderová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ění dokumentového enginu), smaže bezpečnostní značku a odvolá přístupové oprávnění. Volitelné — posuvná expirace provádí stejný úklid — ale je doporučena pro velké dokumenty.
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, platné při 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 pouze pro kompatibilitu — místo toho nastavte ImageResolution v konfiguraci formátu. |
string | Watermark | "" | Vlastní text vodoznaku vykreslený na renderovaných stránkách. Formátovací řetězec: "^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 Core Concepts → Sessions & Security). |
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ář web-farmy. Používejte pouze s odpovídající architekturou sdíleného úložiště/relací. |
string | WebFarmPath | "" | Sdílená cesta používaná specializovaným workflow web-farmy. Prázdná v běžném jednojádrovém prohlížeči. |
bool | EditMode | false | Rezervováno pro samostatně distribuovaný workflow Editoru; ponechte false pro standardní prohlížeč. |
Vlastní vodoznak
DocOptions.Watermark používá šest polí oddělených vlnovkou. 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 |
|---|---|---|
Úvodní ^ | ^ | Volitelný rozložení po všech rozích. Bez něj se používá normální umístění vodoznaku. |
| Text | Confidential | Text vykreslený na každé stránce. Nesmí být prázdný. |
| Barva | Red | Pojmenovaná barva, kterou rozumí vykreslovací vrstva. |
| Velikost písma | 24 | Velikost písma; neplatný číselný vstup se vrátí na výchozí hodnotu vykreslovače. |
| Název písma | Verdana | Požadovaná rodina písma. Ujistěte se, že je nainstalována v nasazovacím prostředí. |
| Průhlednost | 80 | Hodnota bajtu od 0 do 255. Musí se úspěšně parsovat. |
| Úhel | -45 | Úhel otáčení ve stupních; neplatný číselný vstup se vrátí na výchozí. |
Parser očekává přesně šest polí po volitelném ^. Neplatná definice je nahrazena viditelným záložním řešením SDK Invalid Watermark místo tichého zmizení.
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í prohlížeč | Ne | Čistá stránka základního prohlížeče |
| Aktivní dočasný/demo základní prohlížeč | Ano | Vlastní vodoznak, když se použije čistá cesta základního prohlížeče |
| Chybějící, odmítnutá, prošlá, nesprávná verze nebo licence s neplatnou doménou | Obě | Vodoznak vynucení/ohodnocení; vlastní hodnota jej nepřepíše |
| Vykreslování pluginu podle pravidel hodnocení | Obě | Vodoznak hodnocení |
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 licencovaná funkce aplikace, nikoli způsob, jak nahradit nebo potlačit vodoznak hodnocení.
API anotací
Načítání a export anotací na straně serveru. Kompletní průvodce je v Průvodcích → Anotace; rozhraní je:
| Člen | Účel |
|---|---|
AnnotationManager GetAnnotationManager(string token) | Správce vázaný na 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é stránky/Base64 obálky vrácené 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 vkládanými anotacemi |
Task<int> ExportAnnotationsToPngAsync(…) | PNG soubory s vkládanými anotacemi |
Task<byte[]> ExportAnnotationsToPngZipAsync(string token, int zoom = 100, CancellationToken ct = default) | ZIP soubor s PNG na stránku s vkládanými anotacemi |
Metadata DICOM
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)Metoda je přítomna pro sladění API, ale .NET 6 DICOM prohlížeč nemůže poskytnout technické značky. Vrací null pro DICOM i ne-DICOM relace; v DICOM relaci také zapíše jednorázové 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
Vypište značky <link>/<script> 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 vypisovány pouze když licence umožní, aby UI klienta zůstalo v souladu s chováním serveru.
string ReferenceCss(CssConfig? config = null) // null → Bootstrap + prohlížeč + vyhledávání + anotace
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 + rozdělovač + 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 }))GetWorksheetNames
IReadOnlyList<string> GetWorksheetNames(string token)Vrací názvy listů otevřené tabulky v pořadí sešitu, nebo prázdný seznam, pokud otevřený dokument není tabulkou.
Přidáno ve verzi 26.9.0.
Byla tato stránka užitečná?