Visare
Den huvudsakliga dokumentvisarklassen
Viewer (namespace Doconut) är den offentliga ingångspunkten för att öppna dokument från Razor‑sidor, MVC‑kontrollers, Blazor‑komponenter eller minimala API:er. Den är sealed, registrerad som en transient‑tjänst av AddDoconut(), och löses upp via konstruktörsinjektion — skapa den aldrig direkt.
Det tidigare .NET Standard‑biblioteket exponerade en offentlig konstruktor som tog minnescachen, HTTP‑kontextåtkomstern och en eller flera licensvägar. Den konstruktorn är borta; tjänstegrafen tillhandahåller dessa beroenden.
Viewer har ingen per‑begäran‑status och implementerar avsiktligt inte IDisposable: dokumentsessioner lever oberoende i sessionscachen, så att avyttra tjänsten skulle aldrig kunna stänga ett öppet dokument (se Kärnkoncepter → Hur Visaren fungerar).
OpenDocumentAsync
Öppnar ett dokument och returnerar sessionstoken som klientwidgeten använder för alla efterföljande begäranden. Varje öppning är asynkron — det finns ingen synkron OpenDocument.
| Överlagring | Använd när |
|---|---|
Task<string> OpenDocumentAsync(string filePath, DocOptions? options = null, CancellationToken ct = default) | Öppning från disk med automatisk formatdetektering och formatets standardkonfiguration |
Task<string> OpenDocumentAsync(string filePath, BaseConfig? config, DocOptions? options = null, CancellationToken ct = default) | Du behöver renderingsalternativ per format (PdfConfig, WordConfig, …) |
Task<string> OpenDocumentAsync(Stream stream, FileInfo fileInfo, BaseConfig? config = null, DocOptions? options = null, CancellationToken ct = default) | Dokumentet är inte en fil på disk (uppladdning, databas, blob). fileInfo måste ha rätt filändelse — den styr formatdetektering |
// 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));Undantag att hantera:
LicenseException— en hittad licens avvisas (meddelandet innehåller avvisningsorsaken), eller så kräver formatet en plugin‑funktion som inte längre beviljas. Kalenderutgång utan avvisningsmeddelande degraderas till vattenmärkt rendering istället för att kasta ett undantag.FormatNotSupportedException—Dokumentformat '<extension>' stöds inte.InvalidDataException— filinnehållet är korrupt eller matchar inte dess filändelse.
CloseDocument
void CloseDocument(string token)Tar bort sessionen från cachen (avyttrar dokumentmotorn omedelbart), raderar säkerhetsmarkören och återkallar åtkomstbehörigheten. Valfritt — glidande utgång utför samma städning — men rekommenderas för stora dokument.
GetPageCount
int GetPageCount(string token)Totalt antal sidor i den öppna sessionen. Kastar ett undantag om token är okänt eller har gått ut.
Capability flags
| Medlem | Betydelse |
|---|---|
bool IsSearchEnabled | Den aktuella licensen beviljar Search |
bool IsAnnotationEnabled | Den aktuella licensen beviljar Annotation |
Använd dessa i en Razor‑vy för att rendera ett licensierat Ribbon endast när servern faktiskt kommer att leverera det — se Snabbstart.
DocOptions
Per‑öppning, formatoberoende alternativ (namespace Doconut):
| Typ | Egenskap | Standard | Beskrivning |
|---|---|---|---|
string | Password | "" | Lösenord för skyddade dokument (kopieras automatiskt in i formatkonfigurationen). |
int | ImageResolution | 0 | Obsolet. Endast behållen för kompatibilitet — ställ in ImageResolution i formatkonfigurationen istället. |
string | Watermark | "" | Anpassad vattenmärkningstext som ritas på renderade sidor. Formatsträng: "^Text~Color~FontSize~FontName~Opacity~Angle", t.ex. "^Sample Copy~Red~24~Verdana~80~-45". |
int | TimeOut | 60 | Sessions glidande utgång i minuter. |
bool | IsSecured | true | Ej för närvarande verkställd — reserverad. Token‑bindning styrs globalt av DoconutOptions.UnsafeMode (se Kärnkoncepter → Sessioner & Säkerhet). |
Klassen exponerar också specialiserade egenskaper som avsiktligt ligger utanför det normala enkelvärd‑visningsflödet:
| Typ | Egenskap | Standard | Beskrivning |
|---|---|---|---|
bool | IsWebFarm | false | Markerar öppningsoperationen som ett delat lagringsscenario. Notera versal‑/gemen‑skrivning — det tidigare biblioteket stavade detta IsWebfarm. |
string | WebFarmPath | "" | Delad sökväg som används av det arbetsflödet. Tidigare stavades WebfarmPath. Tom i den normala enkelvärd‑visaren, och behövs inte på publiceringssökvägen som beskrivs i Distribuerade distributioner. |
bool | EditMode | false | Reserverad för ett separat distribuerat redigeringsarbetsflöde; lämna false för standardvisaren. |
Anpassad vattenstämpel
DocOptions.Watermark använder sex tilde‑avgränsade fält. En valfri inledande ^ begär layout i alla hörn:
^Text~Color~FontSize~FontName~Opacity~Anglestring token = await viewer.OpenDocumentAsync(
path,
new PdfConfig(),
new DocOptions
{
Watermark = "^Confidential~Red~24~Verdana~80~-45",
TimeOut = 30
});| Fält | Exempel | Betydelse |
|---|---|---|
Inledande ^ | ^ | Valfritt layout i alla hörn. Utan det används normal vattenstämpelplacering. |
| Text | Confidential | Text som renderas på varje sida. Den får inte vara tom. |
| Färg | Red | Namngiven färg som förstås av ritlagret. |
| Teckenstorlek | 24 | Teckenstorlek; ogiltig numerisk inmatning faller tillbaka till renderarens standard. |
| Teckensnitt | Verdana | Begärt teckensnittsfamilj. Säkerställ att det är installerat i distributionsmiljön. |
| Opacitet | 80 | Bytevärde från 0 till 255. Det måste kunna parsas korrekt. |
| Vinkel | -45 | Rotationsvinkel i grader; ogiltig numerisk inmatning faller tillbaka till standard. |
Parsern förväntar sig exakt sex fält efter den valfria ^. En ogiltig definition ersätts av SDK:ns synliga Invalid Watermark‑fallback istället för att tyst försvinna.
Licensbeslut
| Licensstatus | Anpassat värde angivet | Renderat resultat |
|---|---|---|
| Giltig betald visningslicens | Nej | Ren sida |
| Giltig betald visningslicens | Ja | Anpassad vattenstämpel |
| Aktiv tillfällig/demo-basvisare | Nej | Ren basvisarsida |
| Aktiv tillfällig/demo-basvisare | Ja | Anpassad vattenstämpel när den rena basvisarvägen gäller |
| Saknad, avvisad, utgången, fel version eller ogiltig domänlicens | Båda | Genomdrifts-/utvärderingsvattenstämpel; det anpassade värdet åsidosätter den inte |
| Plugin‑rendering under utvärderingsregler | Båda | Utvärderingsvattenstämpel |
Samma beslut tillämpas på levererade sidbilder och annotationsexporter. Animerad GIF‑utdata stämplas bildruta för bildruta. En anpassad vattenstämpel är därför en licensierad applikationsfunktion, inte ett sätt att ersätta eller undertrycka utvärderingsvattenstämpeln.
Annotations‑API
Serverbaserad laddning och export av annotationer. Den fullständiga genomgången finns i Guider → Annotationer; ytan är:
| Medlem | Syfte |
|---|---|
AnnotationManager GetAnnotationManager(string token) | Manager bunden till den öppna sessionens sidimensioner |
AnnotationManager GetAnnotationManager(string token, int pageWidth, int pageHeight) | Manager med explicita sidimensioner |
AnnotationManager GetAnnotationManager(int pageWidth, int pageHeight) | Sessionsoberoende manager |
void LoadAnnotationData(string token, AnnotationManager manager) | Ladda annotationer byggda i C# in i sessionen |
void LoadAnnotationData(string token, string annotationData) | Ladda annotationer från den kodade sidan/Base64‑omslaget som returneras av AnnotationManager.GetAnnotationData() |
void LoadAnnotationXML(string token, XmlDocument annotationXml) | Ladda annotationer från XML |
XmlDocument GetAnnotationXML(string token) | Exportera sessionens annotationer som XML |
Task<byte[]> ExportAnnotationsToPdfAsync(string token, int zoom = 100, CancellationToken ct = default) | PDF med inbrända annotationer |
Task<int> ExportAnnotationsToPngAsync(…) | PNG‑filer med inbrända annotationer |
Task<byte[]> ExportAnnotationsToPngZipAsync(string token, int zoom = 100, CancellationToken ct = default) | ZIP med PNG‑filer per sida med inbrända annotationer |
Var och en av dessa tar sessions‑token. Det tidigare bibliotekets sessionsfria GetAnnotationManager(pageWidth, pageHeight)‑format överlever för att bygga annotationer utanför en session, men laddning av dem kräver fortfarande en token.
DICOM‑metadata
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)Metoden finns för API‑justering, men detta paket kan inte tillhandahålla tekniska DICOM‑taggar: metadata‑läsaren levereras endast med en .NET 8‑build. Den returnerar null för DICOM‑ och icke‑DICOM‑sessioner; i en DICOM‑session skriver den också en engångsvarning som förklarar plattformsbegränsningen. Rendering av sidor, ramar och animationer fortsätter att stödjas.
Resurs‑hjälpare — ReferenceCss / ReferenceScripts
Generera <link>/<script>‑taggarna för de inbäddade resurserna som levereras av UseDoconutResources(), i korrekt beroendeordning. Paket för licensstyrda funktioner såsom sökning och annotering genereras endast när licensen aktiverar dem, vilket håller klient‑UI‑en konsekvent med serverbeteendet.
string ReferenceCss(CssConfig? config = null) // null → Bootstrap + viewer + search + annotation
string ReferenceScripts(ScriptConfig? config = null)CssConfig‑flaggor: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss (search‑gated), IncludeAnnotationCss (annotation‑gated).
ScriptConfig‑flaggor: IncludeJQuery (required by all others), IncludeBootstrap, IncludeViewerScripts (core: docViewer.js + splitter + links), IncludeSearchScripts and IncludeSearchBar (search‑gated), IncludeAnnotationScripts and IncludeAnnotationBar (annotation‑gated).
@inject Doconut.Viewer Viewer
@Html.Raw(Viewer.ReferenceCss(new CssConfig { IncludeBootstrapCss = true, IncludeViewerCss = true }))
@Html.Raw(Viewer.ReferenceScripts(new ScriptConfig { IncludeJQuery = true, IncludeViewerScripts = true }))Dessa hjälpfunktioner är det stödjade sättet att leverera webbläsarresurserna. Applikationer som kopierade docViewer.js, documentLinks.js och docViewer.UI.js till wwwroot bör ta bort dessa kopior när sidan renderas från de genererade taggarna.
Var den här sidan hjälpsam?