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
csharp
// 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

text
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

text
int GetPageCount(string token)

Celkový počet stránek otevřené relace. Vyhodí výjimku, pokud je token neznámý nebo vypršel.

GetWorksheetNames

text
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í

ČlenVýznam
bool IsSearchEnabledAktuální licence uděluje Search
bool IsAnnotationEnabledAktuá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):

TypVlastnostVýchozíPopis
stringPassword""Heslo pro chráněné dokumenty (automaticky zkopírováno do konfigurace formátu).
intImageResolution0Zastaralé. Uchováváno pouze pro kompatibilitu — místo toho nastavte ImageResolution v konfiguraci formátu.
stringWatermark""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".
intTimeOut60Posuvná expirace relace v minutách.
boolIsSecuredtrueV 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:

TypVlastnostVýchozíPopis
boolIsWebFarmfalseOznač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.
stringWebFarmPath""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í.
boolEditModefalseRezervová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
^Text~Color~FontSize~FontName~Opacity~Angle
csharp
string token = await viewer.OpenDocumentAsync(
    path,
    new PdfConfig(),
    new DocOptions
    {
        Watermark = "^Confidential~Red~24~Verdana~80~-45",
        TimeOut = 30
    });
PolePříkladVýznam
Úvodní ^^Volitelný rozvrh po všech rozích. Bez něj se použije běžné umístění vodoznaku.
TextConfidentialText vykreslený na každé stránce. Nesmí být prázdný.
BarvaRedPojmenovaná barva rozpoznávaná kreslicí vrstvou.
Velikost písma24Velikost písma; neplatný číselný vstup se vrátí k výchozímu nastavení rendereru.
Název písmaVerdanaPožadovaná rodina písma. Ujistěte se, že je nainstalována v prostředí nasazení.
Průhlednost80Byte 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 licencePoskytnutá vlastní hodnotaVykreslený výsledek
Platná placená licence pro prohlížečNeČistá stránka
Platná placená licence pro prohlížečAnoVlastní 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čAnoVlastní 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énouOběVynucovací/evaluační vodoznak; vlastní hodnota jej nepřepíše
Vykreslování pluginu podle evaluačních pravidelObě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

text
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.

text
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í).

html
@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á?