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

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á expirace provádí stejný úklid — ale je doporučena u velkých dokumentů.

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 při otevírání (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 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".
intTimeOut60Posuvná expirace 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é vystavuje specializované vlastnosti, které jsou úmyslně mimo běžný jednojmenný tok prohlížení:

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ě/relací.
stringWebFarmPath""Sdílená cesta používaná ve specializovaném workflow web-farmy. Prázdná v normálním jednojmenném prohlížeči.
boolEditModefalseRezervová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
^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ý layout po všech rozích. Bez něj se použije běžné umístění vodotisku.
TextConfidentialText vykreslený na každé stránce. Nesmí být prázdný.
ColorRedNázev barvy, který rozumí vykreslovací vrstva.
FontSize24Velikost písma; neplatný číselný vstup se vrátí k výchozímu nastavení rendereru.
FontNameVerdanaPožadovaná rodina písma. Ujistěte se, že je nainstalována v prostředí nasazení.
Opacity80Hodnota 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 licenceVlastní hodnota zadánaVýsledek
Platná placená licence pro prohlížečNeČistá stránka
Platná placená licence pro prohlížečAnoVlastní vodotisk
Aktivní dočasná/Demo základní licenceNeČistá stránka základního prohlížeče
Aktivní dočasná/Demo základní licenceAnoVlastní 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énouLibovolnáVynucený/evaluační vodotisk; vlastní hodnota jej nepřepíše
Pluginové renderování pod evaluačními pravidlyLibovolná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

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

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

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

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