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.Listenere l’interfacciaIConverterListenersono obsoleti; sono sostituiti dagli eventi di ciclo di vita suConversionEvents.- Il vecchio evento per documento
OnConversionCompletedè stato rinominato inOnDocumentConverted. 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