GroupDocs.Conversion for .NET v26.6 тепер доступний. У цьому випуску додано розширену підтримку подій конвертації, кастомну обробку зображень для PDF‑to‑Markdown, автоматичне визначення RTL для DOCX та кілька покращень стабільності.

What’s new in this release

Key Category Summary
CONVERSIONNET-7934 Feature PDF to Markdown: allow custom image extraction and placeholder insertion
CONVERSIONNET-8286 Feature Introduce ConversionEvents aggregator with per-call/global handler precedence
CONVERSIONNET-8314 Feature Add OnFontSubstituted conversion event
CONVERSIONNET-8263 Improvement NuGet Package Split
CONVERSIONNET-8280 Improvement Auto-detect RTL direction for DOCX with missing/incorrect bidi markup
CONVERSIONNET-8325 Improvement Spreadsheet to PDF conversions with SkipEmptyRowsAndColumns overlap text when the sheet has form controls
CONVERSIONNET-7912 Bug Corrupted characters in JPEG/TIFF output
CONVERSIONNET-8281 Bug Converting a particular XFA PDF to image hangs and does not produce any result
CONVERSIONNET-8321 Bug Problem converting publisher - Unable to load Aspose.PDF

Public API changes

⚠️ Breaking changes

  • Назви подій були перейменовані, а модель агрегації подій змінена. Існуючі властивості подій результату та методи fluent‑ланцюжка стали застарілими і будуть видалені у v26.9.
  • ConverterSettings.Listener та інтерфейс IConverterListener стали застарілими; їх замінено на життєвий цикл подій у ConversionEvents.
  • Стара подія OnConversionCompleted для окремого документа була перейменована на OnDocumentConverted. Тепер таке ж ім’я використовується для події життєвого циклу конвеєра, яка спрацьовує один раз у кінці процесу конвертації.

1. New font‑substitution event

API Description
ConversionEvents.OnFontSubstituted Fires when a font required by the source document is missing and a substitute is used (either automatically or via a user‑defined rule).
FontSubstitutionContext Provides details about the substitution: SourceFileName, OriginalFontName, SubstituteFontName, Reason.
FontSubstitute Represents a user‑supplied substitution rule (e.g., FontSubstitute.Create("MissingFont", "Arial")).

Посилання:

Classic API example

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