Мы рады объявить GroupDocs.Assembly for .NET 25.12 – рождественский релиз, доступный с декабря 2025. Это обновление добавляет полную поддержку соответствия OOXML, улучшает генерацию штрих‑кодов в Linux и решает критические проблемы обработки шаблонов.

Что нового в этом релизе

Category Issue Summary
Feature ASSEMBLYNET‑70 Реализовать явную спецификацию соответствия OOXML для Word‑документов.
Enhancement ASSEMBLYNET‑68 Добавить поддержку соответствия OOXML (Ecma, Transitional, Strict) для Word‑документов.
Enhancement ASSEMBLYNET‑69 Автоматически сохранять уровень соответствия исходного документа, когда это возможно.
Enhancement ASSEMBLYNET‑75 Требовать минимальный X‑размер для штрих‑кодов Codabar (более надёжная генерация).
Enhancement ASSEMBLYNET‑76 Запретить использование прозрачных цветов при генерации штрих‑кодов в Linux.
Fix ASSEMBLYNET‑73 Выражения шаблона внутри встроенных элемент управления содержимым (SdtRun) теперь обрабатываются корректно.
Fix ASSEMBLYNET‑60 Штрих‑коды больше не отображаются пустыми в сборках Linux (.NET 8).

Поддержка соответствия OOXML

Теперь вы можете выбрать точный уровень соответствия OOXML при сохранении Word‑документа (DOCX, DOCM, DOTX и т.д.). Библиотека также автоматически сохраняет соответствие исходного документа, если оно Transitional.

Новое открытое перечисление: 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
    }
}

Новое свойство в 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; }
}

Как указать явный уровень соответствия OOXML

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);

Как автоматически сохранять соответствие исходного документа

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

Обработка выражений шаблона в встроенных элементах управления содержимым (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.

Исправления и улучшения

  • [Enhancement] Генерация штрих‑кода Codabar теперь требует минимальный X‑размер (ASSEMBLYNET‑75).
  • [Enhancement] При рендеринге штрих‑кодов в Linux избегаются прозрачные цвета (ASSEMBLYNET‑76).
  • [Fix] Выражения шаблона внутри элементов SdtRun обрабатываются (ASSEMBLYNET‑73).
  • [Fix] Штрих‑коды больше не отображаются пустыми в Linux (.NET 8) (ASSEMBLYNET‑60).

Как получить обновление

  • NuGet – Обновите до последней версии пакета GroupDocs.Assembly:

    dotnet add package GroupDocs.Assembly --version 25.12
    

    (Тот же пакет работает для .NET 6+, .NET 5 и .NET Framework 4.6.2.)

  • Прямая загрузка – Скачайте скомпилированные сборки для .NET со страницы официального релиза:

    GroupDocs.Assembly for .NET 25.12 DLLs only

Ресурсы