GroupDocs.Conversion per .NET v26.6 è ora disponibile. Questa release aggiunge un supporto più ricco per gli eventi di conversione, gestione personalizzata delle immagini per PDF‑to‑Markdown, rilevamento automatico RTL per DOCX e numerosi miglioramenti di stabilità.

Novità di questa versione

Chiave Categoria Riepilogo
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

Modifiche all’API pubblica

⚠️ Breaking changes

  • I nomi degli eventi sono stati rinominati e il modello di aggregazione degli eventi è cambiato. Le proprietà degli eventi per risultato esistenti e i metodi a catena fluent sono obsoleti e saranno rimossi in v26.9.
  • ConverterSettings.Listener e l’interfaccia IConverterListener sono obsoleti; sono sostituiti dagli eventi di ciclo di vita su ConversionEvents.
  • Il vecchio evento per documento OnConversionCompleted è stato rinominato in OnDocumentConverted. Lo stesso nome è ora usato per l’evento di ciclo di vita della pipeline che viene attivato una sola volta alla fine di un processo di conversione.

1. Nuovo evento di sostituzione dei font

API Descrizione
ConversionEvents.OnFontSubstituted Viene attivato quando un font richiesto dal documento sorgente è mancante e viene utilizzato un sostituto (automaticamente o tramite una regola definita dall’utente).
FontSubstitutionContext Fornisce dettagli sulla sostituzione: SourceFileName, OriginalFontName, SubstituteFontName, Reason.
FontSubstitute Rappresenta una regola di sostituzione fornita dall’utente (es., FontSubstitute.Create("MissingFont", "Arial")).

Riferimento:

Esempio di API classica

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());

Esempio di API fluente

FluentConverter
    .WithEvents(e => e.OnFontSubstituted = ctx =>
        Console.WriteLine($"Font substituted: {ctx.Reason ?? ctx.OriginalFontName}"))
    .Load("source.docx")
    .ConvertTo("output.pdf")
    .WithOptions(new PdfConvertOptions())
    .Convert();

Esempio di regola di sostituzione (Word‑processing / Spreadsheet / PDF)

using GroupDocs.Conversion.Options.Load;

using var converter = new Converter(
    "source.docx",
    _ => new WordProcessingLoadOptions
    {
        FontSubstitutes