GroupDocs.Conversion dla .NET v26.6 jest już dostępny. To wydanie dodaje bogatsze wsparcie zdarzeń konwersji, obsługę własnych obrazów przy konwersji PDF‑do‑Markdown, automatyczne wykrywanie RTL dla DOCX oraz wiele poprawek stabilności.

Co nowego w tym wydaniu

Klucz Kategoria Podsumowanie
CONVERSIONNET-7934 Feature PDF do Markdown: umożliwienie własnego wyodrębniania obrazów i wstawiania symboli zastępczych
CONVERSIONNET-8286 Feature Wprowadzenie agregatora ConversionEvents z priorytetem obsługi per‑call/global
CONVERSIONNET-8314 Feature Dodanie zdarzenia konwersji OnFontSubstituted
CONVERSIONNET-8263 Improvement Rozdzielenie pakietu NuGet
CONVERSIONNET-8280 Improvement Automatyczne wykrywanie kierunku RTL dla DOCX z brakującym/niepoprawnym oznaczeniem bidi
CONVERSIONNET-8325 Improvement Konwersje arkuszy kalkulacyjnych do PDF z opcją SkipEmptyRowsAndColumns nakładają tekst, gdy arkusz zawiera kontrolki formularza
CONVERSIONNET-7912 Bug Uszkodzone znaki w wyjściu JPEG/TIFF
CONVERSIONNET-8281 Bug Konwersja konkretnego XFA PDF do obrazu zawiesza się i nie generuje wyniku
CONVERSIONNET-8321 Bug Problem przy konwersji publisher – Unable to load Aspose.PDF

Zmiany w publicznym API

⚠️ Zmiany łamiące kompatybilność

  • Nazwy zdarzeń zostały zmienione, a model agregacji zdarzeń uległ zmianie. Istniejące właściwości zdarzeń per‑result oraz metody łańcuchowe fluent są przestarzałe i zostaną usunięte w wersji v26.9.
  • ConverterSettings.Listener oraz interfejs IConverterListenerprzestarzałe; zostały zastąpione zdarzeniami cyklu życia w ConversionEvents.
  • Stare zdarzenie per‑document OnConversionCompleted zostało przemianowane na OnDocumentConverted. Ta sama nazwa jest teraz używana dla zdarzenia cyklu życia pipeline, które wywoływane jest raz na koniec przebiegu konwersji.

1. Nowe zdarzenie podstawiania czcionki

API Opis
ConversionEvents.OnFontSubstituted Wywoływane, gdy czcionka wymagana przez dokument źródłowy jest nieobecna i zostaje użyta substytucja (automatyczna lub zdefiniowana przez użytkownika).
FontSubstitutionContext Dostarcza szczegóły dotyczące substytucji: SourceFileName, OriginalFontName, SubstituteFontName, Reason.
FontSubstitute Reprezentuje regułę podstawiania dostarczoną przez użytkownika (np. FontSubstitute.Create("MissingFont", "Arial")).

Referencje:

Przykład klasycznego 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());

Przykład 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();

Przykład reguły podstawiania (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());

2. Zunifikowane zdarzenie