We’re happy to announce GroupDocs.Assembly for .NET 25.12 – the Christmas release that’s available as of December 2025. This update adds full OOXML compliance handling, improves barcode generation on Linux, and resolves critical template‑processing issues.
What’s new in this release
| Category | Issue | Summary |
|---|---|---|
| Feature | ASSEMBLYNET‑70 | Implement explicit OOXML compliance specification for Word documents. |
| Enhancement | ASSEMBLYNET‑68 | Add OOXML compliance support (Ecma, Transitional, Strict) for Word documents. |
| Enhancement | ASSEMBLYNET‑69 | Preserve the original document’s compliance level automatically when possible. |
| Enhancement | ASSEMBLYNET‑75 | Enforce a minimum X‑dimension for Codabar barcodes (more reliable generation). |
| Enhancement | ASSEMBLYNET‑76 | Prevent transparent colors from being used during barcode generation on Linux. |
| Fix | ASSEMBLYNET‑73 | Template expressions inside inline content controls (SdtRun) are now processed correctly. |
| Fix | ASSEMBLYNET‑60 | Barcodes no longer render blank on Linux (.NET 8) assemblies. |
OOXML Compliance Support
You can now choose the exact OOXML compliance level when saving a Word document (DOCX, DOCM, DOTX, etc.). The library also automatically preserves the source document’s compliance when the original is Transitional.
New public enumeration: OoxmlCompliance
namespace GroupDocs.Assembly
{
/// <summary>
/// Specifies the OOXML compliance level to use when saving Word documents to OOXML formats.
/// </summary>
public enum OoxmlCompliance
{
/// <summary>ECMA‑376 compliance.</summary>
Ecma,
/// <summary>ISO/IEC 29500:2008 Transitional compliance.</summary>
Transitional,
/// <summary>ISO/IEC 29500:2008 Strict compliance.</summary>
Strict
}
}
New property in LoadSaveOptions: OoxmlCompliance
public class LoadSaveOptions
{
/// <summary>
/// Gets or sets the OOXML compliance level to use when saving Word documents to OOXML formats.
/// The default value is null, which means the compliance level will be determined automatically.
/// </summary>
public OoxmlCompliance? OoxmlCompliance { get; set; }
}
How to specify an explicit OOXML compliance level
var source = "template.docx";
var target = "output.docx";
var data = "data.json";
// Create LoadSaveOptions with explicit OOXML compliance
var options = new LoadSaveOptions(FileFormat.Docx);
options.OoxmlCompliance = OoxmlCompliance.Strict; // or Ecma, Transitional
var dataSourceInfo = new DataSourceInfo(new JsonDataSource(data));
var assembler = new DocumentAssembler();
assembler.AssembleDocument(source, target, options, dataSourceInfo);
How to preserve the original document’s compliance automatically
var source = "template_transitional.docx"; // Document with Transitional compliance
var target = "output.docx";
var data = "data.json";
// OoxmlCompliance is null by default – original compliance will be preserved
var options = new LoadSaveOptions(FileFormat.Docx);
// options.OoxmlCompliance remains null
var dataSourceInfo = new DataSourceInfo(new JsonDataSource(data));
var assembler = new DocumentAssembler();
assembler.AssembleDocument(source, target, options, dataSourceInfo);
// Output document keeps Transitional compliance
Processing template expressions in inline content controls (SdtRun)
var source = "template_with_sdtrun.docx";
var target = "output.docx";
var data = "data.json";
// Template document contains:
// - SdtBlock: <<[field1]>>
// - SdtRun (inline): <<[field2]>> // Now correctly processed
// - Regular text: <<[field3]>>
var options = new LoadSaveOptions(FileFormat.Docx);
var dataSourceInfo = new DataSourceInfo(new JsonDataSource(data));
var assembler = new DocumentAssembler();
assembler.AssembleDocument(source, target, options, dataSourceInfo);
// All template expressions, including those in SdtRun, are replaced.
Fixes and enhancements
- [Enhancement] Codabar barcode generation now enforces a minimum X‑dimension (ASSEMBLYNET‑75).
- [Enhancement] Barcode rendering on Linux avoids transparent colors (ASSEMBLYNET‑76).
- [Fix] Template expressions inside
SdtRuncontrols are processed (ASSEMBLYNET‑73). - [Fix] Barcodes no longer appear blank on Linux (.NET 8) (ASSEMBLYNET‑60).
How to get the update
-
NuGet – Upgrade to the latest GroupDocs.Assembly package:
dotnet add package GroupDocs.Assembly --version 25.12(The same package works for .NET 6+, .NET 5, and .NET Framework 4.6.2.)
-
Direct download – Download the compiled assemblies for .NET from the official release page: