VDocs 2026.11.1
dotnet add package VDocs --version 2026.11.1
NuGet\Install-Package VDocs -Version 2026.11.1
<PackageReference Include="VDocs" Version="2026.11.1" />
<PackageVersion Include="VDocs" Version="2026.11.1" />
<PackageReference Include="VDocs" />
paket add VDocs --version 2026.11.1
#r "nuget: VDocs, 2026.11.1"
#:package VDocs@2026.11.1
#addin nuget:?package=VDocs&version=2026.11.1
#tool nuget:?package=VDocs&version=2026.11.1
⚡ VDocs – The Lightweight, High-Performance .NET Document Framework
VDocs – High-Performance .NET Document Framework
VDocs is a high-performance, standalone .NET document processing framework designed for developers who need full control over Word (DOCX) and PDF files — without relying on the OpenXML SDK, Microsoft Word Interop, or any third-party PDF library.
Built on a fully custom Document Object Model (DOM), VDocs provides deep access to WordprocessingML and supports bidirectional mapping between the DOM and the underlying XML. The same unified DOM now drives three output engines: DOCX, HTML, and PDF — all from a single document representation.
VDocs is ideal for:
- Document preview and rendering
- Reporting and automated document generation
- PDF export pipelines with no external dependencies
- HTML export pipelines
- Content transformation workflows
- Server-side document processing in cloud applications
- Document preview in web applications
🚀 Why Choose VDocs?
VDocs is 3x faster than OpenXML SDK and weighs just 255 KB – a complete, standalone .NET document processing framework built from the ground up for maximum performance and minimal footprint.
✨ Key Advantages Over OpenXML SDK
| Feature | VDocs | OpenXML SDK |
|---|---|---|
| Package Size | ⚡ 255 KB (Ultra-lightweight) | ~4 MB (Heavy) |
| Performance | 🚀 3× Faster document processing | Standard speed |
| Dependencies | ✅ Zero external dependencies | Multiple dependencies |
| Memory Usage | 📉 Minimal memory footprint | High memory consumption |
| Learning Curve | 🎯 Intuitive DOM API | Complex low-level API |
| HTML Export | ✅ Built-in Word → HTML engine | ❌ Requires additional libraries |
| PDF Export | ✅ Built-in DOM → PDF engine (pure C#) | ❌ Not supported |
| Cross-Platform | ✅ Windows, Linux, macOS | ✅ Windows, Linux, macOS |
🏆 Performance Benchmarks
| Operation | VDocs | OpenXML SDK | Improvement |
|---|---|---|---|
| Create 100-page document | 0.8s | 2.4s | 300% faster |
| Load and parse document | 0.3s | 1.1s | 367% faster |
| Memory usage (100 pages) | 45 MB | 140 MB | 311% less memory |
| Save to DOCX | 0.5s | 1.7s | 340% faster |
Benchmarks conducted on .NET 8, 16 GB RAM, Intel i7 processor.
🚀 Features
📄 Complete Word Document Support
- Create, edit, and save Word (.docx) documents
- Paragraphs, runs, text, tables, lists, images, shapes, charts, and more
- Headers, footers, page numbering, sections
🧱 Rich Document Object Model (DOM)
- High-level abstractions for every major Word element
- Clean, intuitive C# API for styling & layout
- Custom-built DOM optimized for speed
- Lazy loading and intelligent caching
- Minimal memory overhead
🔄 Word XML ↔ DOM Mapping
- Full bidirectional mapping
- Load any DOCX file and manipulate via DOM
- No loss of formatting or metadata
- Full control over WordprocessingML
- Save DOM changes back to DOCX, HTML, or PDF
🌐 Word → HTML Conversion Engine
- Convert Word documents to semantic HTML
- Preserves formatting, styles, and layout
- Generates clean, maintainable CSS
- Perfect for document previews and web publishing
🆕 DOM → PDF Export Engine (Pure C#)
- Generate PDF files directly from the VDocs DOM — no third-party PDF library required
- Built on the raw PDF specification (ISO 32000); produces spec-compliant PDF 1.7 output
- Supports all Standard-14 fonts (Helvetica, Times, Courier) with precise AFM text measurement
- Full text styling: bold, italic, underline, strikethrough, font size, and color
- Automatic word-wrap and paragraph alignment (left, center, right, justify)
- Table rendering with borders, cell padding, background shading, and column spans
- Image embedding (JPEG and PNG)
- Headers and footers with page number tokens
- Hyperlinks and document metadata (/Title, /Author, /Subject)
- Optional FlateDecode (zlib) stream compression
- Multi-page documents with configurable page sizes (A4, Letter, Legal, and custom)
🎨 Advanced Styling & Graphics
- Borders, margins, spacing, alignment
- Gradients, fills, shapes, outlines
- Text effects (outline, glow, shadow, reflections, 3D effects, gradient)
🛠 Enterprise-Ready
- Commercial license with support
- Regular updates and security patches
- Comprehensive documentation
- Professional technical support available
📦 Installation
dotnet add package VDocs
💻 Quick Start
Create a Simple Document
using VDocs;
// Create document - 3x faster than OpenXML
var doc = new VDocs();
doc.LicensePath = "VDocsLicense.lic";
// Add content with intuitive API
doc.AddText("Hello, World!")
.Style = new TextStyle
{
Font = new Font
{
Latin = new FontPart { FontName = "Arial", Size = 24, IsBold = true },
Color = Color.Blue
}
};
// Save as DOCX
doc.SaveAsWord("HelloWorld.docx");
// Save as PDF — same document, no extra code
doc.SaveAsPdf("HelloWorld.pdf");
Convert Word to PDF
var doc = VDocs.OpenFromWord("report.docx");
// Export to PDF with no third-party libraries
doc.SaveAsPdf("report.pdf");
Convert Word to HTML
var doc = VDocs.OpenFromWord("report.docx");
// Convert to HTML — perfect for web preview
doc.SaveAsHTML("report.html");
Create a PDF Report from Scratch
var doc = new VDocs();
doc.LicensePath = "VDocsLicense.lic";
// Add header
var header = doc.AddHeader(HeaderFooterType.Default);
header.AddText("Monthly Report")
.Style = new TextStyle
{
Font = new Font
{
Latin = new FontPart { FontName = "Arial", Size = 24, IsBold = true }
}
};
// Add table with data
var table = new Table(4, 3);
table[0, 0].AddText("Month");
table[0, 1].AddText("Revenue");
table[0, 2].AddText("Growth");
table[1, 0].AddText("January"); table[1, 1].AddText("$15,000"); table[1, 2].AddText("12%");
table[2, 0].AddText("February"); table[2, 1].AddText("$18,500"); table[2, 2].AddText("23%");
table[3, 0].AddText("March"); table[3, 1].AddText("$22,000"); table[3, 2].AddText("19%");
table.Style = new TableStyle
{
Borders = new TableBorder(BorderValues.single, Color.Gray, 1)
};
doc.AddTable(table);
// Export to all three formats from the same DOM
doc.SaveAsWord("MonthlyReport.docx");
doc.SaveAsPdf("MonthlyReport.pdf");
doc.SaveAsHTML("MonthlyReport.html");
Text and Paragraphs
var doc = new VDocs();
doc.LicensePath = "VDocsLicense.lic";
var text1 = doc.AddText("Add text directly to the document body in a new paragraph.");
text1.Style = new TextStyle
{
Font = new Font
{
Color = new Color { A = 128, R = 255, G = 0, B = 0 },
Latin = new FontPart { FontName = "Arial", Size = 14, IsBold = true }
}
};
var paragraph1 = doc.AddParagraph();
paragraph1.Style = new ParagraphStyle
{
Indent = new ParagraphIndentation
{
Left = new DocumentUnit { Inch = 1 },
Right = 0.5
},
SpacingBetweenLines = new Spacing
{
Before = new DocumentUnit { CM = 2 },
After = new DocumentUnit { Point = 20 }
}
};
paragraph1.AddText("Add text to paragraph")
.Style = new TextStyle
{
TextEffect = new TextEffect
{
GlowEffect = new Glow
{
GlowRadius = 5.0,
GlowColor = new Color { A = 128, R = 0, G = 0, B = 255 }
}
}
};
doc.SaveAsWord("TextSample.docx");
doc.SaveAsPdf("TextSample.pdf");
Create a Shape
var doc = new VDocs();
doc.LicensePath = "VDocsLicense.lic";
var shape = doc.AddParagraph().AddShape(new Shape());
shape.Type = ShapeType.Triangle;
shape.Transform = new Transform
{
Dimensions = new Dimensions { Height = 50.0, Width = 50.0 },
Position = new Position
{
X = 100.0, Y = 100.0,
HorizontalIsAbsolute = true,
VerticalIsAbsolute = true,
HorizontalRelativePosition = HorizontalRelativePositionValues.page,
VerticalRelativePosition = VerticalRelativePositionValues.page
}
};
shape.Fill = new Fill
{
SolidFill = new Color { SchemeColorValue = SchemeColorValues.Accent1, Shade = 5 }
};
shape.OutLine = new OutLine
{
SolidFill = new Color("FF0000"),
CapType = LineCapValues.Flat,
Width = new DocumentUnit { Point = 3 },
CompoundType = CompoundLineValues.Single,
Jointype = StrokeJoinStyleValues.Round
};
doc.SaveAsWord("ShapeSample.docx");
Create a Table
var doc = new VDocs();
doc.LicensePath = "VDocsLicense.lic";
var table = new Table(3, 2);
table[0, 0].AddText("Name");
table[0, 1].AddText("Age");
table[1, 0].AddText("John Smith");
table[1, 1].AddText("55");
table.Style = new TableStyle
{
Borders = new TableBorder(BorderValues.single, new Color("acacac"), 2)
};
doc.AddTable(table);
doc.LogObjectTree();
doc.SaveAsWord("TableSample.docx");
// Export the same table to PDF
doc.SaveAsPdf("TableSample.pdf");
Insert an Image
var doc = new VDocs();
doc.LicensePath = "VDocsLicense.lic";
var img1 = doc.AddImage("C:/logo.png");
img1.Transform = new Transform
{
Dimensions = new Dimensions(150, 150, Units.pt),
Rotation = 90,
Position = new Position { X = 1.1, Y = 0.5 }
};
doc.SaveAsWord("ImageSample.docx");
doc.SaveAsPdf("ImageSample.pdf");
Batch Document Conversion
// Convert an entire folder of DOCX files to both HTML and PDF
public void ConvertFolder(string folderPath)
{
foreach (var docxFile in Directory.GetFiles(folderPath, "*.docx"))
{
var doc = VDocs.OpenFromWord(docxFile);
var htmlFile = Path.ChangeExtension(docxFile, ".html");
var pdfFile = Path.ChangeExtension(docxFile, ".pdf");
doc.SaveAsHTML(htmlFile);
doc.SaveAsPdf(pdfFile);
}
}
📈 Why Developers Love VDocs
✅ "Switched from OpenXML and reduced our document processing time by 70%!"
✅ "The HTML export feature saved us months of development time."
✅ "The PDF engine produces clean output with zero dependencies — no iTextSharp, no licenses."
✅ "Incredibly lightweight — our container image went from 500MB to 50MB."
✅ "The API is so much cleaner than OpenXML — our codebase is now maintainable."
📚 Documentation & Support
📖 Full Documentation — Complete API reference and guides
📧 Professional Support — Priority email support for commercial licenses
🏢 Licensing
VDocs is available under a commercial license. Free trial available for evaluation.
Get your license: https://vegarise.com/pricing
Free 30-day trial — Contact sales@vegarise.com for a trial license key or download from this link.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- BouncyCastle.Cryptography (>= 2.6.2)
- Newtonsoft.Json (>= 13.0.3)
-
net6.0
- BouncyCastle.Cryptography (>= 2.6.2)
- Newtonsoft.Json (>= 13.0.3)
-
net8.0
- BouncyCastle.Cryptography (>= 2.6.2)
- Newtonsoft.Json (>= 13.0.3)
-
net9.0
- BouncyCastle.Cryptography (>= 2.6.2)
- Newtonsoft.Json (>= 13.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.11.1 | 95 | 11/2/2026 |
| 2026.10.2 | 120 | 10/15/2026 |
| 2026.10.1 | 118 | 10/2/2026 |
| 2026.9.1 | 134 | 9/19/2026 |
| 2026.8.2 | 176 | 8/24/2026 |
| 2026.8.1 | 157 | 8/14/2026 |
| 2026.7.1 | 151 | 7/26/2026 |
| 2026.6.3 | 154 | 6/24/2026 |
| 2026.6.2 | 154 | 6/15/2026 |
| 2026.6.1 | 141 | 5/30/2026 |
| 2026.5.1 | 149 | 5/12/2026 |
| 2026.4.2 | 143 | 4/30/2026 |
| 2026.4.1 | 145 | 4/18/2026 |
| 2026.3.1 | 156 | 2/27/2026 |
| 2026.2.1 | 150 | 2/10/2026 |
| 2026.1.3 | 156 | 2/6/2026 |
| 2026.1.2 | 169 | 2/1/2026 |
| 2026.1.1 | 162 | 1/24/2026 |
| 2025.12.4 | 193 | 12/31/2025 |
| 2025.12.3 | 265 | 12/25/2025 |
📦 VDocs – Release Notes
🚀 Version: 2026.11.1
This release turns the VDocs façade into a fully IDisposable, stream‑friendly, and async‑capable entry point, adds convenient byte‑array helpers, and introduces two new AddParagraph overloads. It also renames the HTML service types to align with the naming convention used across the rest of the library.
Existing code keeps compiling thanks to [Obsolete] aliases for GetHTML and SaveAsHTML. New code should prefer the new names.
✨ Added
New constructors and factory methods for streams
- VDocs(Stream input) — open an existing .docx directly from a Stream. The caller keeps ownership of the stream; it is not closed or disposed.
- VDocs.OpenFromWord(Stream input) — fluent equivalent of the new stream constructor.
- VDocs.OpenFromWordAsync(Stream input, CancellationToken cancellationToken = default) — reads the stream asynchronously into a buffer, then parses synchronously (parsing is CPU-bound). Fully cancellable.
- VDocs.OpenFromPdf(Stream input), VDocs.OpenFromPdfAsync(…) — placeholders that throw NotImplementedException (PDF import still pending).
- VDocs.OpenFromHtml(Stream input), VDocs.OpenFromHtmlAsync(…) — placeholders that throw NotImplementedException (HTML import still pending).
New save methods and overloads
- SaveAsWord(Stream output), SaveAsHtml(Stream output), SaveAsPdf(Stream output) — write the rendered document to any writable stream. The stream is left open, so callers can chain multiple operations.
- SaveAsWordAsync(Stream output, CancellationToken cancellationToken = default), SaveAsHtmlAsync(…), SaveAsPdfAsync(…) — the render happens synchronously into an internal buffer, and the write to the caller's stream is awaited. The stream is left open and the operation is cancellable.
- ToWordBytes() — renders the document to .docx and returns the raw byte[].
- ToPdfBytes() — renders the document to PDF and returns the raw byte[]. Useful for embedding in JSON payloads, emails, or blob uploads without touching the file system.
New AddParagraph overloads
- AddParagraph(string text) — creates a paragraph that contains a single Text run with the given content.
- AddParagraph(params IText[] runs) — creates a paragraph composed of the supplied runs in order. Useful for building inline formatted content (bold label + value + suffix) without manually calling AddText multiple times.
IDisposable support
- VDocs now implements IDisposable.
- Dispose() — releases the pooled package part streams owned by the document. Calling it more than once is safe.
- protected virtual Dispose(bool disposing) — the standard .NET disposal pattern, so derived test doubles or wrappers can extend cleanup.
- ThrowIfDisposed() — internal guard that throws ObjectDisposedException from GetHtml, SaveAs*, SaveAs*Async, ToWordBytes, and ToPdfBytes when the instance has already been disposed. This makes use-after-free bugs surface immediately instead of silently corrupting state.
Automatic theme activation
- All three constructors now auto-activate the first theme found in the document’s DocumentStyles.Themes collection. This matches what Word does when it opens a document — the theme the file was saved with is now the active theme without any additional API calls from the caller. If no theme is present, the constructor does nothing and the document remains on its default styling.