Что нового в этом выпуске
| Ключ | Категория | Краткое описание |
|---|---|---|
| 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
Прямое скачивание
Прямые ссылки для скачивания в примечаниях к выпуску не предоставлены.