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 SdtRun controls 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:

    GroupDocs.Assembly for .NET 25.12 DLLs only

Resources