Что нового в этом выпуске

Ключ Категория Краткое описание
CONVERSIONNET-8437 Функция Добавить формат Drawio в качестве цели конвертации для документов Diagram
CONVERSIONNET-8442 Функция Добавить формат Mermaid MMD в качестве источника конвертации для документов Diagram
CONVERSIONNET-8445 Функция Добавить CAB в качестве цели конвертации для архивных документов
CONVERSIONNET-8459 Функция Добавить CadLayoutScope в CadLoadOptions для конвертации модельного пространства, листов чертежа или обоих
CONVERSIONNET-8464 Функция Добавить XAR в качестве источника и цели конвертации для архивных документов
CONVERSIONNET-8460 Улучшение Конвертировать каждый лист CAD в отдельный слайд, лист таблицы, страницу Word, изображение HTML/MHTML и регион SVG
CONVERSIONNET-8461 Улучшение Указывать отсутствующие листы, когда выбор листов CAD ничего не совпадает
CONVERSIONNET-8462 Улучшение Сообщать о неустановленном LoadOptions.Format как об отсутствии, а не бросать исключение
CONVERSIONNET-8361 Ошибка Фигуры DOCX с контурами отображаются некорректно при конвертации в PDF
CONVERSIONNET-8396 Ошибка Конвертация файла Presentation в PDF приводит к несоответствию колонтитулов
CONVERSIONNET-8399 Ошибка Конвертация файла Presentation с повреждёнными ссылками в оглавлении приводит к GroupDocsConversionException
CONVERSIONNET-8426 Ошибка Конвертация DWG в PDF с учётом ориентации листов
CONVERSIONNET-8427 Ошибка Исправлен NullReferenceException при конвертации CAD‑чертежей без активного листа
CONVERSIONNET-8428 Ошибка Исправлено двойное преобразование единиц, когда для CAD‑конвертации явно задан размер страницы
CONVERSIONNET-8429 Ошибка Исправлено игнорирование CadLoadOptions при конвертации CAD в PDF/UA
CONVERSIONNET-8430 Ошибка Исправлен CadDocumentInfo, который сообщал об одной странице для CAD‑документов с несколькими листами
CONVERSIONNET-8444 Ошибка Проблема с миниатюрой в Linux‑окружении для GroupDocs.Conversion
CONVERSIONNET-8467 Ошибка EML → PDF: исключение несовместимых типов единиц измерения

Изменения публичного API

⚠️ Обратная несовместимость – следующие изменения изменяют существующее публичное поведение. Скорректируйте свой код, чтобы избежать ошибок во время выполнения.

1. LoadOptions.Format теперь возвращает null вместо исключения, когда формат не установлен

Затронутые классы: все 28 типизированных load‑options (например, SpreadsheetLoadOptions, PdfLoadOptions, CadLoadOptions, …)

Что изменилось
Раньше чтение свойства Format до назначения формата вызывало исключение. Теперь оно возвращает null, позволяя выполнить простую проверку на null.

Пример миграции

var loadOptions = new SpreadsheetLoadOptions();

if (loadOptions.Format == null)
{
    // Новый путь выполнения – ранее был недоступен, потому что геттер бросал исключение.
}

Рекомендации
Замените любые try/catch вокруг loadOptions.Format проверкой на null. Не сравнивайте с FileType.Unknown; правильный тест – == null.


2. Точное совпадение при проверке CadLoadOptions.LayoutNames с подробным сообщением об ошибке

Затронутый класс: CadLoadOptions

Что изменилось
LayoutNames теперь сравниваются точно (с учётом регистра) с именами листов чертежа. Если ни одно имя не совпадает, конвертация завершается с InvalidLoadOptionsException, в сообщении которого перечислены доступные листы и запрос, который не совпал.

Пример миграции

using GroupDocs.Conversion.Exceptions;

try
{
    using var converter = new Converter("drawing.dwg",
        ctx => new CadLoadOptions { LayoutNames = new[] { "layout1" } });
    converter.Convert("out.pdf", new PdfConvertOptions());
}
catch (InvalidLoadOptionsException ex)
{
    // Пример сообщения:
    // "No layout name in CadLoadOptions.LayoutNames matches this drawing, which carries
    //  Model, Layout1, Layout2. Requested: layout1. Names are matched exactly, so a name
    //  that differs only in case is a different name."
    Console.WriteLine(ex.Message);
}

Рекомендации

  • Убедитесь, что имена листов написаны правильно и с учётом регистра, как в исходном чертеже.
  • Если требуется только подмножество листов, указывайте точные имена; несовпадающие элементы игнорируются, а совпадающие листы всё равно конвертируются.

3. Многостраничные CAD‑чертежи теперь создают отдельный объект вывода для каждого листа

Затронутые классы: Converter, PresentationConvertOptions, PdfConvertOptions

Что изменилось
Ранее конвертация чертежа с несколькими листами модельного пространства приводила к единому сплющенному изображению/слайду. Теперь создаются отдельные единицы вывода (слайды, страницы и т.д.) для каждого листа, размер которых соответствует настройкам листа. Converter.GetDocumentInfo().PagesCount теперь отражает количество созданных единиц.

Пример миграции – конвертация

using var converter = new Converter("multi-layout.dwg");

// Три листа на входе, три слайда на выходе – ранее один сплющенный слайд.
converter.Convert("drawing.pptx", new PresentationConvertOptions());

Пример миграции – запрос количества страниц

using var converter = new Converter("multi-layout.dwg");
int sheets = converter.GetDocumentInfo().PagesCount; // Возвращает 3 для трёх листов

Рекомендации

  • Скорректируйте последующую обработку (например, пагинацию UI, именование файлов) для поддержки нескольких выходных файлов/страниц.
  • Для однолистных чертежей поведение остаётся прежним.
  • Исключение: CAD → PDF/UA‑1 по‑прежнему создаёт одну помеченную страницу.

4. Новое свойство CadLoadOptions.LayoutScope для явного управления тем, какие пространства конвертируются

Затронутый класс: CadLoadOptions

Что изменилось
LayoutScope позволяет указать, загружать Model, Layouts или Both (по умолчанию).

  • Когда задаётся LayoutNames, LayoutScope игнорируется, поскольку приоритет имеют явные имена.
  • Если выбранный диапазон не даёт листов для чертежа, содержащего хотя бы один лист, теперь бросается InvalidLoadOptionsException вместо тихой отрисовки пространств по умолчанию.

Пример миграции – конвертация только листов бумажного пространства

using GroupDocs.Conversion;
using GroupDocs.Conversion.Options.Convert;
using GroupDocs.Conversion.Options.Load;

using var converter = new Converter("drawing.dwg",
    ctx => new CadLoadOptions { LayoutScope = CadLayoutScope.Layouts });
converter.Convert("layouts.pdf", new PdfConvertOptions());

Рекомендации

  • Существующий код, полагающийся на неявный выбор, продолжит работать, поскольку Both остаётся значением по умолчанию.
  • Чтобы исключить модельное пространство или включить только его, задайте LayoutScope как CadLayoutScope.Model или CadLayoutScope.Layouts соответственно.
  • Если ранее вы пытались отфильтровать листы, передавая пустой массив LayoutNames, замените эту схему на соответствующее значение LayoutScope, чтобы получать явную ошибку, когда листов не выбрано.

Новые возможности

Продвинутое управление листами CAD: Выбирайте конкретные листы CAD, конвертируйте каждый лист в отдельный слайд, лист таблицы, страницу, изображение или регион SVG и выбирайте модельное пространство, листы бумаги или оба с помощью CadLayoutScope. Это обеспечивает точный вывод по листам и учитывает настройки листа, такие как ориентация и размер страницы.

Расширенная поддержка архивов: Форматы XAR и CAB теперь доступны как источники и цели для архивных документов, что позволяет бесшовно конвертировать в эти типы архивов и из них.

Современная совместимость диаграмм: Файлы Mermaid MMD могут использоваться как источники диаграмм, а файлы Drawio поддерживаются как цели конвертации, упрощая интеграцию современных инструментов диаграмм в ваши конвейеры конвертации.

Критические улучшения стабильности: Исправлены сбои конвертации EML → PDF, контуров фигур DOCX, заголовков/колонтитулов презентаций и повреждённых ссылок в оглавлении, генерации миниатюр в Linux и обработки ориентации листов DWG. Эти исправления повышают надёжность при работе с электронными письмами, офисными документами, презентациями и CAD‑рабочими процессами.

Пример кода

using var converter = new Converter("multi-layout.dwg");

// Три листа на входе, три слайда на выходе – ранее один сплющенный слайд.
converter.Convert("drawing.pptx", new PresentationConvertOptions());

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

NuGet

Install-Package GroupDocs.Conversion -Version 26.8

GroupDocs.Conversion 26.8 on NuGet

Прямое скачивание

Прямые ссылки для скачивания в примечаниях к выпуску не предоставлены.

Ресурсы