Visare
Den huvudsakliga dokumentvisarklassen
Viewer (namespace Doconut) är den offentliga ingångspunkten för att öppna dokument från Razor‑sidor, MVC‑kontroller, Blazor‑komponenter eller minimal‑API:er. Den är sealed, registrerad som en transient‑tjänst av AddDoconut(), och löses upp via konstruktor‑injektion — skapa den aldrig direkt.
Viewer har ingen per‑begäran‑statistik och avsiktligt not implement IDisposable: dokumentsessioner lever oberoende i sessionscachen, så att avyttra tjänsten aldrig kan stänga ett öppet dokument (se Core Concepts → Hur Visaren Fungerar).
OpenDocumentAsync
Öppnar ett dokument och returnerar sessionstoken som klientwidgeten använder för alla efterföljande begäranden.
| Ö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 per‑format renderingsalternativ (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 |
// Enkel öppning
string token = await viewer.OpenDocumentAsync(path);
// Med per-format konfiguration och alternativ
token = await viewer.OpenDocumentAsync(
path,
new PdfConfig { AllowSearch = true, AllowCopy = true },
new DocOptions { TimeOut = 30 });
// Från en uppladdning
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 är beviljad. Kalenderutgång utan avvisningsmeddelande degraderas till vattenmärkt rendering istället för att kasta ett undantag.FormatNotSupportedException—Document format '<extension>' is not supported.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.
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 | Föråldrad. Behålls endast för kompatibilitet — sätt ImageResolution i formatkonfigurationen istället. |
string | Watermark | "" | Anpassad vattenmärkestext 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 | Sessionens glidande utgång i minuter. |
bool | IsSecured | true | För närvarande inte verkställd — reserverad. Tokenbindning styrs globalt av DoconutOptions.UnsafeMode (se Core Concepts → Sessioner & Säkerhet). |
Klassen exponerar också specialiserade egenskaper som avsiktligt ligger utanför det normala enkelvärdiga visningsflödet:
| Typ | Egenskap | Standard | Beskrivning |
|---|---|---|---|
bool | IsWebFarm | false | Markerar öppningsoperationen som ett webbfarmscenario. Använd endast med motsvarande delade lagrings-/sessionsarkitektur. |
string | WebFarmPath | "" | Delad sökväg som används av det specialiserade webbfarmarbetsflödet. Tom i den normala enkelvärdiga visaren. |
bool | EditMode | false | Reserverad för det separat distribuerade Editor‑arbetsflödet; lämna false för standardvisaren. |
Anpassad vattenstämpel
DocOptions.Watermark använder sex tilde‑separerade fält. En valfri inledande ^ begär layout med 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 |
|---|---|---|
Leading ^ | ^ | Valfri layout med alla hörn. Utan den används normal placering av vattenstämpel. |
| Text | Confidential | Text som renderas på varje sida. Den får inte vara tom. |
| Color | Red | Namngiven färg som förstås av ritlagret. |
| FontSize | 24 | Teckenstorlek; ogiltig numerisk inmatning faller tillbaka på renderarens standard. |
| FontName | Verdana | Begärd typsnittsfamilj. Säkerställ att den är installerad i distributionsmiljön. |
| Opacity | 80 | Byte‑värde från 0 till 255. Det måste kunna parsas korrekt. |
| Angle | -45 | Rotationsvinkel i grader; ogiltig numerisk inmatning faller tillbaka på standardvärdet. |
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 försvinna tyst.
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 bas‑visarsida |
| Aktiv tillfällig/demo-basvisare | Ja | Anpassad vattenstämpel när den rena bas‑visarvägen gäller |
| Saknad, avvisad, utgången, fel version eller ogiltig domän‑licens | Båda | Genomförande‑/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 export av annotationer. Animerad GIF‑utdata märks bildruta för bildruta. En anpassad vattenstämpel är därför en licensierad programfunktion, inte ett sätt att ersätta eller undertrycka utvärderingsvattenstämpeln.
Annotations‑API
Server‑sidans inläsning och export av annotationer. Den fullständiga genomgången finns i Guider → Annotations; gränssnittet ä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) | Läs in annotationer byggda i C# i sessionen |
void LoadAnnotationData(string token, string annotationData) | Läs in annotationer från den kodade sida/Base64‑omslaget som returneras av AnnotationManager.GetAnnotationData() |
void LoadAnnotationXML(string token, XmlDocument annotationXml) | Läs in 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 |
DICOM‑metadata
Task<DicomMetadata?> GetDicomMetadataAsync(string token, CancellationToken ct = default)Metoden finns för API‑justering, men .NET 6 DICOM‑visaren kan inte leverera tekniska taggar. 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 sida, bildruta och animation stöds fortfarande.
Resurshjä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 annotation genereras endast när licensen möjliggör dem, så att klient‑UI‑et förblir konsekvent med serverbeteendet.
string ReferenceCss(CssConfig? config = null) // null → Bootstrap + visare + sökning + annotation
string ReferenceScripts(ScriptConfig? config = null)CssConfig‑flaggor: IncludeBootstrapCss, IncludeViewerCss, IncludeSearchCss (sök‑styrd), IncludeAnnotationCss (annotation‑styrd).
ScriptConfig‑flaggor: IncludeJQuery (krävs av alla andra), IncludeBootstrap, IncludeViewerScripts (kärna: docViewer.js + splitter + länkar), IncludeSearchScripts och IncludeSearchBar (sök‑styrd), IncludeAnnotationScripts och IncludeAnnotationBar (annotation‑styrd).
@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
IReadOnlyList<string> GetWorksheetNames(string token)Returnerar kalkylbladens namn för ett öppet kalkylark, i arbetsbokens ordning, eller en tom lista när det öppna dokumentet inte är ett kalkylark.
Tillagt i 26.9.0.
Var den här sidan hjälpsam?