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 injekcí do konstruktoru — nikdy jej neinstanciujte přímo.
Předchozí knihovna .NET Standard poskytovala veřejný konstruktor přijímající paměťovou cache, přístup k HTTP kontextu a jeden 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 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. 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írání 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 volbami 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 k ošetření:
LicenseException— nalezená licence je odmítnuta (zpráva nese 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 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í 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. Vyhodí výjimku, pokud je token neznámý nebo vypršel.
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í tabulka.
Zobrazeny jsou pouze vykreslené listy: skryté a prázdné listy jsou vyloučeny a když ExcelConfig.SheetNames omezuje renderování, zobrazí se jen tyto listy. List není vždy jedna stránka — velmi velký list je vykreslen přes několik stránek. Vyhodí výjimku, pokud je token neznámý nebo vypršel.
Přidáno ve verzi 26.9.0.
Příznaky schopností
| Člen | Význam |
|---|---|
bool IsSearchEnabled | Aktuální licence uděluje Search |
bool IsAnnotationEnabled | Aktuální licence uděluje Annotation |
Použijte je v Razor view k vykreslení licencovaného Ribbonu pouze tehdy, když jej server skutečně poskytne — viz Rychlý start.
Možnosti dokumentu
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 pouze pro kompatibilitu — místo toho nastavte ImageResolution v konfiguraci formátu. |
string | Watermark | "" | Vlastní text vodoznaku vykreslený na 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 | V současné době nevyžadováno — rezervováno. Vázání tokenu je řízeno globálně pomocí DoconutOptions.UnsafeMode (viz Core Concepts → Sessions & Security). |
Třída také poskytuje specializované vlastnosti, které jsou úmyslně mimo běžný jednojmenný prohlížečový tok:
| 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 velikosti písmen — předchozí knihovna tuto hodnotu psala jako IsWebfarm. |
string | WebFarmPath | "" | Sdílená cesta používaná tímto pracovním postupem. Dříve psáno jako WebfarmPath. Prázdná v běžném jednojmenném prohlížeči a není potřeba na publikační cestě popsané v Distribuovaná nasazení. |
bool | EditMode | false | Rezervováno pro samostatně distribuovaný editační pracovní postup; ponechte false pro standardní prohlížeč. |
Vlastní vodoznak
DocOptions.Watermark používá šest polí oddělených vlnovkou. Volitelný úvodní ^ požaduje rozvrž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ý rozvrh po všech rozích. Bez něj se použije běžné umístění vodoznaku. |
| Text | Confidential | Text vykreslený na každé stránce. Nesmí být prázdný. |
| Barva | Red | Pojmenovaná barva rozpoznávaná kreslicí vrstvou. |
| Velikost písma | 24 | Velikost písma; neplatný číselný vstup se vrátí k výchozímu nastavení rendereru. |
| Název písma | Verdana | Požadovaná rodina písma. Ujistěte se, že je nainstalována v prostředí nasazení. |
| Průhlednost | 80 | Byte hodnota od 0 do 255. Musí být úspěšně parsována. |
| Úhel | -45 | Úhel otočení ve stupních; neplatný číselný vstup se vrátí k výchozímu. |
Parser očekává přesně šest polí po volitelném ^. Neplatná definice je nahrazena viditelným náhradním Invalid Watermark SDK 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á, vypršená, špatná verze nebo licence s neplatnou doménou | Obě | Vynucovací/evaluační vodoznak; vlastní hodnota jej nepřepíše |
| Vykreslování pluginu podle evaluačních pravidel | Obě | 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; rozhraní je:
| Člen | Účel |
|---|---|
AnnotationManager GetAnnotationManager(string token) | Manažer vázaný na rozměry stránky otevřené relace |
AnnotationManager GetAnnotationManager(string token, int pageWidth, int pageHeight) | Manažer s explicitními rozměry stránky |
AnnotationManager GetAnnotationManager(int pageWidth, int pageHeight) | Manažer 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é pomocí 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 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 s vypálenými anotacemi |
Každý z nich vyžaduje token relace. Tvar GetAnnotationManager(pageWidth, pageHeight) z předchozí knihovny, který nevyžaduje relaci, přežívá pro vytváření anotací mimo relaci, ale jejich načítání stále vyžaduje token.
DICOM metadata
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)Metoda je zde pro sladění API, ale tento balíček nemůže poskytovat technické DICOM značky: čtečka metadata je dostupná jen ve verzi .NET 8. Vrací null pro DICOM i ne‑DICOM relace; v DICOM relaci také zapisuje 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
Vygenerujte značky <link>/<script> pro vložené zdroje poskytované pomocí 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 doručování zdrojů do 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í ze vygenerovaných značek.
Byla tato stránka užitečná?