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

Categoria Problema Resumo
Recurso ASSEMBLYNET‑70 Implementar especificação explícita de conformidade OOXML para documentos Word.
Aprimoramento ASSEMBLYNET‑68 Adicionar suporte a conformidade OOXML (Ecma, Transitional, Strict) para documentos Word.
Aprimoramento ASSEMBLYNET‑69 Preservar automaticamente o nível de conformidade do documento original quando possível.
Aprimoramento ASSEMBLYNET‑75 Aplicar uma dimensão X mínima para códigos de barra Codabar (geração mais confiável).
Aprimoramento ASSEMBLYNET‑76 Impedir que cores transparentes sejam usadas durante a geração de códigos de barra no Linux.
Correção ASSEMBLYNET‑73 Expressões de modelo dentro de controles de conteúdo inline (SdtRun) agora são processadas corretamente.
Correção ASSEMBLYNET‑60 Códigos de barra não são mais exibidos em branco em assemblies Linux (.NET 8).

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

  • [Aprimoramento] A geração de códigos de barra Codabar agora impõe uma dimensão X mínima (ASSEMBLYNET‑75).
  • [Aprimoramento] A renderização de códigos de barra no Linux evita cores transparentes (ASSEMBLYNET‑76).
  • [Correção] Expressões de modelo dentro de controles SdtRun são processadas (ASSEMBLYNET‑73).
  • [Correção] Códigos de barra não aparecem mais em branco no 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