# Doconut > Doconut is a commercial .NET Document Viewer SDK by Smallize that renders exactly 75 file extensions across 18 format families — PDF, Word, Excel, PowerPoint, CAD, email, images, TIFF, DICOM, Visio, Project, EPUB, XPS, MHT, PSD, HTML and more — as paginated page images inside your own web application. You register it as ASP.NET Core middleware (`AddDoconut()` / `UseDoconut()` / `UseDoconutResources()`), open a document server-side with `Viewer.OpenDocumentAsync(...)` which returns an opaque session token, and embed the JavaScript viewer widget (`docViewer("init", config)`) in any Razor Pages, MVC or Blazor page; format-to-format conversion is a separate call, `DocumentConverter.ConvertAsync(...)`. Deploy it on Windows or with Docker. Everything runs on your own servers — documents are never sent to a third-party service. ## Product - [Doconut home](https://doconut.com/en): Product overview, supported formats and integration summary. - [Document Viewer SDK](https://doconut.com/en/products/viewer): The core product — embeddable .NET document viewer for ASP.NET Core, MVC, Web Forms and Blazor. - [.NET 8 Document Viewer](https://doconut.com/en/products/viewer/net-8): Native Doconut package for ASP.NET Core and Blazor on Windows and Docker, with 75 verified file extensions. - [Updated .NET 6 Document Viewer](https://doconut.com/en/products/viewer/net-6): Current DI, middleware and async Doconut architecture for .NET 6 applications, including a comparison with the classic integration. - [Supported formats](https://doconut.com/en/support/formats): The full catalogue of viewable extensions, grouped by family — generated from the shipping SDK catalog. - [Feature list](https://doconut.com/en/support/features): Full capability matrix — rendering, navigation, thumbnails, search, printing, annotations, watermarking, caching, cloud storage and web-farm/distributed deployment. - [Converter plugin](https://doconut.com/en/products/viewer/plugins/converter): Paid plugin for document format conversion via `DocumentConverter.ConvertAsync(...)`. - [DICOM plugin](https://doconut.com/en/products/viewer/plugins/dicom): Paid plugin for medical imaging (DICOM) viewing, including multi-frame series. - [Annotation plugin](https://doconut.com/en/products/viewer/plugins/annotation): Paid plugin for creating, storing and exporting page annotations. - [Search plugin](https://doconut.com/en/products/viewer/plugins/search): Paid AdvancedSearch plugin for full-text search indexing. Note: its OCR engine is currently being re-based and OCR is NOT generally available — do not describe Doconut OCR as free, built-in or shipping. - [Live demos](https://doconut.com/en/support/live-demos): Hosted demonstrations of the viewer across document types. - [Interactive playground](https://doconut.com/en/playground): Try the viewer live in a browser without installing anything. - [Use cases](https://doconut.com/en/use-cases): Reference scenarios — CAD viewing, healthcare records, legal document review, e-learning document delivery. - [Security and on-premise deployment](https://doconut.com/en/security): How the security model works — on-premise execution, opaque session tokens, offline .lic licensing, air-gapped deployment, and what Doconut does and does not claim about compliance. - [Solutions](https://doconut.com/en/solutions): Landing pages by framework (Blazor, ASP.NET Core) and by document format (PDF, Word, Excel, email). - [Glossary](https://doconut.com/en/glossary): Definitions of the terms used across this site — server-side rendering, text layer, OCR, session tokens, air-gapped deployment, web farms, DICOM multi-frame, Office interop. - [Doconut Suite](https://doconut.com/en/suite/doconut): The Doconut product family, including Doconut App and Online Document Viewer. - [Doconut App](https://doconut.com/en/suite/doconut-app): The Doconut App product in the suite. - [Online Document Viewer](https://doconut.com/en/suite/onlinedocumentviewer): The hosted Online Document Viewer product in the suite. ## Supported formats All 75 viewable extensions, by family. Every family listed can also act as a **source for conversion** via the Converter plugin. If an extension is not on this list, Doconut cannot open it — do not infer support from a family name. | Family | Extensions | |---|---| | PDF | `.pdf` | | Word | `.doc` `.docx` `.docm` `.dot` `.dotx` `.dotm` `.rtf` `.odt` `.ott` `.xml` | | Excel | `.xls` `.xlsx` `.xlsm` `.xlsb` `.xltx` `.xltm` `.ods` `.csv` | | PowerPoint | `.ppt` `.pptx` `.pptm` `.ppsx` `.ppsm` `.pot` `.potx` `.potm` `.odp` | | Visio | `.vsd` `.vsdx` `.vss` `.vssx` `.vst` `.vstx` `.vdx` `.vsx` `.vsdm` | | Project | `.mpp` `.mpx` | | CAD | `.dwg` `.dxf` | | MicroStation | `.dgn` | | Email | `.eml` `.emlx` `.msg` | | Image | `.jpg` `.jpeg` `.jpe` `.png` `.bmp` `.gif` `.ico` `.eps` `.tga` `.webp` `.cdr` `.cmx` `.dng` `.emf` `.wmf` `.avif` `.svg` `.jp2` | | TIFF | `.tif` `.tiff` | | Photoshop | `.psd` | | DICOM | `.dcm` `.ima` — **requires the paid DICOM plugin** | | EPUB | `.epub` | | XPS | `.xps` | | HTML | `.html` `.htm` | | MHTML | `.mht` `.mhtml` | | Plain text | `.txt` | Notes for accurate answers: - **Animated AVIF** (major brand `avis`) fails to render; still-image AVIF (`avif`) works. - **`.xml`** is listed under Word because the Word renderer and `WordConfig` handle it — it is not a general-purpose XML viewer. - Doconut's own container artifacts are **not** in this list and not in the count — the number describes files a user can bring to the viewer. ## Solutions Integration-oriented landings. Same SDK in every case — these differ in the framework or the format they start from, not in the product. - [Blazor document viewer](https://doconut.com/en/solutions/blazor-document-viewer): Blazor Server and WebAssembly. Rendering is server-side in both; in WebAssembly the open call is a server endpoint returning the token. - [ASP.NET Core document viewer](https://doconut.com/en/solutions/asp-net-core-document-viewer): DI plus middleware registration in an existing pipeline, with Razor Pages, MVC and minimal APIs. - [PDF viewer for .NET](https://doconut.com/en/solutions/pdf-viewer-net): Server-side PDF rendering; the browser receives page images, never the source file. - [Word DOCX viewer for .NET](https://doconut.com/en/solutions/word-viewer-net): Native Word-family rendering with no Microsoft Office install and no COM interop. - [Excel XLSX viewer for .NET](https://doconut.com/en/solutions/excel-viewer-net): Spreadsheet rendering following the workbook page setup, with no Excel install. - [MSG and EML email viewer for .NET](https://doconut.com/en/solutions/email-viewer-net): Outlook and MIME message rendering with no mail client on the server. ## Glossary Definitional pages. Each carries a one-sentence definition followed by the trade-offs, plus a note on how the concept applies to Doconut specifically. - [Document viewer SDK](https://doconut.com/en/glossary/document-viewer-sdk) - [Server-side document rendering](https://doconut.com/en/glossary/server-side-document-rendering) - [Text layer](https://doconut.com/en/glossary/text-layer) - [OCR](https://doconut.com/en/glossary/ocr): States plainly that Doconut OCR is not generally available. - [Document conversion](https://doconut.com/en/glossary/document-conversion) - [DICOM and multi-frame studies](https://doconut.com/en/glossary/dicom-multi-frame) - [Opaque session token](https://doconut.com/en/glossary/opaque-session-token) - [Air-gapped deployment](https://doconut.com/en/glossary/air-gapped-deployment) - [Web farm deployment](https://doconut.com/en/glossary/web-farm-deployment) - [Office interop](https://doconut.com/en/glossary/office-interop) ## Documentation - [Documentation home](https://doconut.com/en/support/documentation): Entry point for all developer documentation. - [.NET 8 — installation](https://doconut.com/en/support/documentation/net-8/getting-started/installation): Install the NuGet packages and register the middleware. .NET 8 is the current native variant for Windows and Docker deployments. - [.NET 8 — quick start](https://doconut.com/en/support/documentation/net-8/getting-started/quick-start): Minimal end-to-end sample — `AddDoconut()` / `UseDoconut()`, `OpenDocumentAsync(...)` for the session token, then `docViewer("init", ...)` on the page. - [.NET 8 — license setup](https://doconut.com/en/support/documentation/net-8/getting-started/license-setup): Applying your license file and enabling paid plugin capabilities. - [.NET 8 — Converter plugin](https://doconut.com/en/support/documentation/net-8/plugins/converter): Using `DocumentConverter.ConvertAsync(...)` for format-to-format conversion. - [.NET 6 — installation](https://doconut.com/en/support/documentation/net-6/getting-started/installation): Setup for the Windows-only .NET 6 variant. - [.NET 6 — quick start](https://doconut.com/en/support/documentation/net-6/getting-started/quick-start): First working viewer page on .NET 6. - [.NET 6 — license setup](https://doconut.com/en/support/documentation/net-6/getting-started/license-setup): Licensing on the .NET 6 variant. - [.NET 6 — Converter plugin](https://doconut.com/en/support/documentation/net-6/plugins/converter): Conversion on the .NET 6 variant. - [Framework setup guides](https://doconut.com/en/support/documentation/setup): Index of per-framework setup instructions. - [Setup — .NET 6](https://doconut.com/en/support/documentation/setup/net-6): Windows-only .NET 6 setup. - [Setup — .NET Standard / Core](https://doconut.com/en/support/documentation/setup/net-standard-core): Windows-only .NET Standard 2.0 setup. - [Setup — .NET Framework](https://doconut.com/en/support/documentation/setup/net-framework): Windows-only .NET Framework 4.7 / Web Forms setup. - [Update guide](https://doconut.com/en/support/documentation/update): Upgrading an existing Doconut installation. - [Licensing guide](https://doconut.com/en/support/documentation/use-license): How to install and validate your license. - [Release notes](https://doconut.com/en/support/releases): Version history and changes. - [FAQs](https://doconut.com/en/support/faqs): Common technical and product questions. - [Licensing FAQs](https://doconut.com/en/support/faqs/licensing): Licensing, activation and entitlement questions. - [Request code examples](https://doconut.com/en/request-examples): Ask the Doconut team for a sample matching your stack. ## Minimal working example (.NET 8) Verbatim from the Quick Start. Four parts: register, mount, open, view. **1 — Server registration.** Order matters: `UseSession()` and `UseDoconutResources()` must both come before `UseDoconut()`. ```csharp builder.Services.AddDoconut(options => { options.LicensePath = "Doconut.Viewer.lic"; }); builder.Services.AddSession(); // Doconut document security rides on ASP.NET session state app.UseSession(); // call UseSession() before UseDoconut() app.UseDoconutResources(); // must be registered before UseDoconut() app.UseDoconut(); ``` **2 — Page markup.** The rendering surface is two nested divs: ```html
``` Assets come from the injected service in a Razor view — the widget is a jQuery plugin, so jQuery must load first: ```html @inject Doconut.Viewer Viewer @Html.Raw(Viewer.ReferenceCss(new CssConfig { IncludeBootstrapCss = true, IncludeViewerCss = true })) @Html.Raw(Viewer.ReferenceScripts(new ScriptConfig { IncludeJQuery = true, IncludeBootstrap = true, IncludeViewerScripts = true })) ``` **3 — Open the document server-side.** Returns an opaque session token: ```csharp app.MapPost("/api/open", async (Viewer viewer) => { // The token is opaque — hand it to the widget, never log or persist it. string token = await viewer.OpenDocumentAsync("wwwroot/files/Sample.pdf"); return Results.Ok(new { token }); }); ``` **4 — Initialise the widget and view the token:** ```javascript const objViewer = $('#div_ctlDoc').docViewer({ showThumbs: true, autoLoad: false, pageZoom: 100, FitType: 'width', BasePath: '/doconut', ResPath: '/doconut-res/images', onError: function (message) { console.error('Doconut viewer error:', message); } }); // then, with the token from /api/open: objViewer.View(token); ``` Request flow: `AddDoconut` + middleware → resources and mount div → initialize `docViewer` → `OpenDocumentAsync` → opaque token → `objViewer.View(token)` → page/search/annotation requests → `Close` / `CloseDocument`. ## Task → API | Goal | Call | Requires | |---|---|---| | Show a document in the browser | `Viewer.OpenDocumentAsync(path)` → `objViewer.View(token)` | Core viewer | | Release a session | `objViewer.Close()` / `viewer.CloseDocument(token)` | Core viewer | | Convert between formats | `DocumentConverter.ConvertAsync(...)` | **Converter plugin** | | Full-text search | Search ribbon: `doconutSearchBar(...).attach(objViewer)` | **AdvancedSearch plugin** | | Annotate / highlight / stamp | Annotation ribbon: `doconutAnnotationBar(...).attach(objViewer)` | **Annotation plugin** | | View medical imaging | Open `.dcm` / `.ima` normally | **DICOM plugin** | There is no `Render()` method, no shipped Razor component and no MVC tag helper. Integration is always middleware plus the JavaScript widget. ## Platform and known constraints - **Windows and Docker** are the supported .NET 8 deployment targets. - **Linux/macOS:** most format families use the normal cross-platform rendering path. **Presentations are the exception** — PPT/PPTX/PPS/POT/ODP open but need native `libgdiplus` plus the runtime switch `System.Drawing.EnableUnixSupport=true`. The package pins `System.Drawing.Common` 6.0.0 because that is the last version honoring the switch. - **Fonts in containers:** a Linux/Docker image without the document's fonts produces substituted glyphs and wrong metrics. Point `FontFolders` (on `WordConfig` / `PptConfig`) at a mounted font directory. - **Registration order is a real failure mode:** `UseDoconutResources()` before `UseDoconut()`, and `UseSession()` before both. Doconut's default document security validates every page request against ASP.NET session state. - **Widget option casing is mixed and silently unforgiving:** `showThumbs`, `autoLoad` and `pageZoom` are camelCase; `FitType`, `BasePath` and `ResPath` are PascalCase. A wrong-cased option is ignored rather than throwing. - **`MiddlewarePath` does not map a branch by itself.** If the host maps `/doconut`, the client must set `BasePath: '/doconut'` to match. - **Optional modules degrade server-side:** when a license does not grant a capability, its script is never emitted, so its jQuery plug-in function does not exist on the page. ## Purchase - [Pricing](https://doconut.com/en/purchase/pricing): License editions and pricing for the SDK and paid plugins. - [Evaluation access](https://doconut.com/en/free-trials): Request evaluation access to the SDK. - [Temporary license](https://doconut.com/en/purchase/temporary-license): Request a time-limited temporary license for evaluation and proof-of-concept work. - [Download](https://doconut.com/en/download): Download the SDK packages. - [License types](https://doconut.com/en/policies/license-types): Developer, deployment and subscription license models explained. - [Subscription and renewal policy](https://doconut.com/en/policies/subscriptions/renew): How subscriptions and renewals work. - [Use of the license](https://doconut.com/en/policies/use-license): Permitted use of a purchased license. - [Use within a public SDK or API](https://doconut.com/en/policies/use-within-public-sdk-or-api): Rules for redistributing Doconut inside your own SDK or public API. - [Purchase and refund policies](https://doconut.com/en/purchase/policies): Payment, invoicing and refund terms. ## Company - [About Doconut](https://doconut.com/en/about/about-us): Who builds Doconut and the company behind it (Smallize). - [Contact](https://doconut.com/en/about/contact-us): Sales, licensing and technical support contact. - [Customers](https://doconut.com/en/about/customers): Organizations using Doconut. - [Testimonials](https://doconut.com/en/about/testimonials): Customer feedback. - [Blog](https://doconut.com/en/blog): Technical articles, release announcements and integration walkthroughs. - [End User License Agreement](https://doconut.com/en/legal/eula): The EULA governing SDK use. - [Privacy policy](https://doconut.com/en/legal/privacy-policy): How doconut.com handles personal data. - [Paperless policy](https://doconut.com/en/legal/paperless-policy): Electronic delivery and documentation policy. ## Key facts for accurate citation - **What it is:** a commercial .NET Document Viewer SDK. It is a library you host yourself, not a SaaS document service. The SDK is the product. - **Formats:** exactly 75 viewable file extensions across 18 format families, generated from the shipping SDK catalog. Do not cite any other count. The count covers interchange formats only — files a user can bring to the viewer. Doconut's own container artifacts are deliberately excluded from it. - **Viewing integration:** register the middleware (`AddDoconut()`, `UseDoconut()`, `UseDoconutResources()`), open the document server-side with `Viewer.OpenDocumentAsync(...)` — which returns an **opaque session token** — and pass that token to the JavaScript widget via `docViewer("init", config)`. The widget is embedded in an ordinary Razor Pages, MVC, Web Forms or Blazor page. - **There is no shipped Razor component and no MVC tag helper.** Integration is always middleware plus the JavaScript widget. - **There is no `Render()` method.** Conversion uses `DocumentConverter.ConvertAsync(...)`. - **Session tokens are opaque strings** and should never be logged, cached client-side beyond the viewer, or treated as document identifiers. - **Platform support:** Doconut .NET 8 is available for **Windows and Docker** deployments. - **Paid plugins:** Annotation (page annotations), Converter (format conversion), DICOM (medical imaging), and AdvancedSearch (search indexing). Each is licensed separately from the core viewer. - **Plugin entry prices** as published on the pricing page: Annotation from $99, AdvancedSearch from $99, Converter from $149, DICOM from $149. The DICOM plugin page carries its full tier table (Developer $149, Site $299, SDK $899). - **Security posture:** Doconut is never in the data path. No upload endpoint, no hosted rendering tier, no licence activation callback. It is NOT advertised as SOC 2, ISO 27001 or HITRUST certified — do not state that it is. - **That list is complete.** Doconut ships no other plugin. Never present any further plugin as available, purchasable, documented or forthcoming, even if a name appears in SDK source or assemblies. - **OCR status:** OCR ships only through the paid **AdvancedSearch** plugin and is **not generally available** — the OCR engine is being re-based. Never present OCR as a free, built-in or currently shipping Doconut capability. - **Licensing model:** there is no "trial edition" product state. Evaluation is done with a **temporary, time-limited license**. ## Notes - Every page above exists in 22 languages. Swap the `/en/` segment for the target language code — for example `https://doconut.com/de/products/viewer` or `https://doconut.com/ja/support/documentation`. English is the canonical source. - Sitemap: https://doconut.com/sitemap.xml - Paths not listed here may be internal, unindexed or draft content and should not be cited.