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 neobsahuje žá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 prohlížeč funguje).

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írání z disku s automatickým rozpoznáním 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í rozpoznání formátu
csharp
// 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 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í 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

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é — posuvné 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.

DocOptions

Možnosti nezávislé na formátu 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 renderovaných stránkách. Formátovací řetězec: "^Text~Color~FontSize~FontName~Opacity~Angle", např. "^Sample Copy~Red~24~Verdana~80~-45".
intTimeOut60Posuvné vypršení relace v minutách.
boolIsSecuredtrueMomentá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é poskytuje specializované vlastnosti, které jsou úmyslně mimo běžný tok prohlížení na jednom hostiteli:

TypVlastnostVýchozíPopis
boolIsWebFarmfalseOznačuje operaci otevření jako scénář web-farmy. Používejte pouze s odpovídající architekturou sdíleného úložiště/relace.
stringWebFarmPath""Sdílená cesta používaná specializovaným pracovním tokem web-farmy. Prázdná v běžném prohlížeči na jednom hostiteli.
boolEditModefalseRezervováno pro samostatně distribuovaný pracovní tok Editoru; 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ý rozvržení po všech rozích. Bez něj se používá 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í vykreslovače.
Název písmaVerdanaPožadovaná rodina písma. Ujistěte se, že je nainstalována v nasazovacím prostředí.
Průhlednost80Hodnota bajtu od 0 do 255. Musí být úspěšně parsována.
Úhel-45Úhel otáč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 záložním řešením SDK Invalid Watermark místo tichého zmizení.

Rozhodnutí o licenci

Stav licencePoskytnutá vlastní hodnotaVýsledek vykreslení
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énouObojíVodoznak vynucení/ohodnocení; vlastní hodnota jej nepřepisuje
Vykreslování pluginu podle evaluačních pravidelObojíEvaluační vodoznak

Stejné rozhodnutí 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í 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)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 anotacemi vloženými
Task<int> ExportAnnotationsToPngAsync(…)PNG soubory s anotacemi vloženými
Task<byte[]> ExportAnnotationsToPngZipAsync(string token, int zoom = 100, CancellationToken ct = default)ZIP soubor s PNG soubory po stránkách s anotacemi vloženými

Metadata DICOM

text
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)

Vrací metadata DICOM tagů pro relace otevřené přes DICOM plugin; null pro ne-DICOM dokumenty.

Pomocníci zdrojů — ReferenceCss / ReferenceScripts

Vygenerujte značky <link>/<script> pro vložené zdroje poskytované UseDoconutResources() ve správném pořadí závislostí. Balíčky pro funkce řízené licencí, jako je vyhledávání a anotace, jsou generovány pouze když licence umožňuje, aby uživatelské rozhraní klienta zůstalo v souladu s chováním serveru.

text
string ReferenceCss(CssConfig? config = null)      // null → Bootstrap + prohlížeč + vyhledávání + anotace
string ReferenceScripts(ScriptConfig? config = null)

CssConfig příznaky: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss (řízené vyhledáváním), IncludeAnnotationCss (řízené anotacemi).

ScriptConfig příznaky: IncludeJQuery (vyžadováno všemi ostatními), IncludeBootstrap, IncludeViewerScripts (jádro: docViewer.js + splitter + links), IncludeSearchScripts a IncludeSearchBar (řízené vyhledáváním), IncludeAnnotationScripts a IncludeAnnotationBar (řízené anotacemi).

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 }))

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í tabulkou.

Přidáno v 26.9.0.

Byla tato stránka užitečná?