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
SdtRunsã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: