GroupDocs.Conversion for .NET v26.6 тепер доступний. У цьому випуску додано розширену підтримку подій конвертації, користувацьку обробку зображень для PDF‑to‑Markdown, автоматичне визначення RTL для DOCX та кілька покращень стабільності.
Що нового у цьому випуску
| Ключ | Категорія | Опис |
|---|---|---|
| CONVERSIONNET-7934 | Функція | PDF у Markdown: дозволити користувацьке вилучення зображень та вставку заповнювачів |
| CONVERSIONNET-8286 | Функція | Впровадити агрегатор ConversionEvents з пріоритетом обробників per‑call/global |
| CONVERSIONNET-8314 | Функція | Додати подію конвертації OnFontSubstituted |
| CONVERSIONNET-8263 | Поліпшення | Розділення пакету NuGet |
| CONVERSIONNET-8280 | Поліпшення | Автоматичне визначення напрямку RTL для DOCX з відсутньою/невірною bidi‑розміткою |
| CONVERSIONNET-8325 | Поліпшення | Конвертація електронних таблиць у PDF з SkipEmptyRowsAndColumns, що накладає текст, коли лист має елементи управління формою |
| CONVERSIONNET-7912 | Помилка | Пошкоджені символи у виводі JPEG/TIFF |
| CONVERSIONNET-8281 | Помилка | Конвертація певного XFA PDF у зображення зависає і не дає результату |
| CONVERSIONNET-8321 | Помилка | Проблема конвертації publisher — Не вдається завантажити Aspose.PDF |
Зміни у публічному API
⚠️ Критичні зміни
- Назви подій були перейменовані, а модель агрегації подій змінена. Існуючі властивості подій для кожного результату та методи ланцюжка Fluent застарілі і будуть видалені у v26.9.
ConverterSettings.Listenerта інтерфейсIConverterListenerзастарілі; їх замінено на події життєвого циклу вConversionEvents.- Стара подія
OnConversionCompletedдля кожного документа була перейменована наOnDocumentConverted. Тепер таке ж ім’я використовується для події життєвого циклу конвеєра, яка спрацьовує один раз у кінці процесу конвертації.
1. Нова подія підстановки шрифтів
| API | Опис |
|---|---|
ConversionEvents.OnFontSubstituted |
Викликається, коли шрифт, необхідний у вихідному документі, відсутній і використовується заміна (автоматично або за правилом, визначеним користувачем). |
FontSubstitutionContext |
Надає деталі про підстановку: SourceFileName, OriginalFontName, SubstituteFontName, Reason. |
FontSubstitute |
Представляє правило підстановки, задане користувачем (наприклад, FontSubstitute.Create("MissingFont", "Arial")). |
Посилання:
Приклад класичного API
using GroupDocs.Conversion;
using GroupDocs.Conversion.Contracts;
using GroupDocs.Conversion.Options.Convert;
var events = new ConversionEvents
{
OnFontSubstituted = ctx =>
{
var detail = ctx.OriginalFontName != null
? $"{ctx.OriginalFontName} -> {ctx.SubstituteFontName}"
: ctx.Reason;
Console.WriteLine($"Font substituted in '{ctx.SourceFileName}': {detail}");
}
};
using var converter = new Converter(
"source.docx",
() => new ConverterSettings(),
() => events);
converter.Convert("output.pdf", new PdfConvertOptions());
Приклад Fluent API
FluentConverter
.WithEvents(e => e.OnFontSubstituted = ctx =>
Console.WriteLine($"Font substituted: {ctx.Reason ?? ctx.OriginalFontName}"))
.Load("source.docx")
.ConvertTo("output.pdf")
.WithOptions(new PdfConvertOptions())
.Convert();
Приклад правила підстановки (Word‑processing / Spreadsheet / PDF)
using GroupDocs.Conversion.Options.Load;
using var converter = new Converter(
"source.docx",
_ => new WordProcessingLoadOptions
{
FontSubstitutes = new List<FontSubstitute>
{
FontSubstitute.Create("MissingFont", "Arial")
}
},
() => new ConverterSettings(),
() => events);
converter.Convert("output.pdf", new PdfConvertOptions());