GroupDocs.Conversion for .NET v26.6 está disponible. Esta versión añade un soporte más amplio de eventos de conversión, manejo personalizado de imágenes para PDF‑a‑Markdown, detección automática de RTL para DOCX y varias mejoras de estabilidad.
Novedades en esta versión
| Clave | Categoría | Resumen |
|---|---|---|
| CONVERSIONNET-7934 | Feature | PDF a Markdown: permitir extracción personalizada de imágenes e inserción de marcadores de posición |
| CONVERSIONNET-8286 | Feature | Introducir el agregador ConversionEvents con precedencia de manejador por‑llamada/global |
| CONVERSIONNET-8314 | Feature | Añadir el evento de conversión OnFontSubstituted |
| CONVERSIONNET-8263 | Improvement | División del paquete NuGet |
| CONVERSIONNET-8280 | Improvement | Detección automática de dirección RTL para DOCX con marcado bidi faltante/incorrecto |
| CONVERSIONNET-8325 | Improvement | Conversión de hoja de cálculo a PDF con SkipEmptyRowsAndColumns superpone texto cuando la hoja tiene controles de formulario |
| CONVERSIONNET-7912 | Bug | Caracteres corruptos en la salida JPEG/TIFF |
| CONVERSIONNET-8281 | Bug | La conversión de un PDF XFA específico a imagen se bloquea y no produce ningún resultado |
| CONVERSIONNET-8321 | Bug | Problema al convertir publisher - No se puede cargar Aspose.PDF |
Cambios en la API pública
⚠️ Cambios críticos
- Los nombres de los eventos han sido renombrados y el modelo de agregación de eventos ha cambiado. Las propiedades de eventos por‑resultado existentes y los métodos de cadena fluida son obsoletos y se eliminarán en la v26.9.
ConverterSettings.Listenery la interfazIConverterListenerson obsoletos; se sustituyen por eventos del ciclo de vida enConversionEvents.- El antiguo evento
OnConversionCompletedpor documento se ha renombrado aOnDocumentConverted. El mismo nombre se usa ahora para el evento del ciclo de vida de la canalización que se dispara una vez al final de una ejecución de conversión.
1. Nuevo evento de sustitución de fuentes
| API | Descripción |
|---|---|
ConversionEvents.OnFontSubstituted |
Se dispara cuando una fuente requerida por el documento de origen falta y se utiliza una sustituta (ya sea automáticamente o mediante una regla definida por el usuario). |
FontSubstitutionContext |
Proporciona detalles sobre la sustitución: SourceFileName, OriginalFontName, SubstituteFontName, Reason. |
FontSubstitute |
Representa una regla de sustitución suministrada por el usuario (p. ej., FontSubstitute.Create("MissingFont", "Arial")). |
Referencia:
Ejemplo de API clásica
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($"Fuente sustituida en '{ctx.SourceFileName}': {detail}");
}
};
using var converter = new Converter(
"source.docx",
() => new ConverterSettings(),
() => events);
converter.Convert("output.pdf", new PdfConvertOptions());
Ejemplo de API fluida
FluentConverter
.WithEvents(e => e.OnFontSubstituted = ctx =>
Console.WriteLine($"Fuente sustituida: {ctx.Reason ?? ctx.OriginalFontName}"))
.Load("source.docx")
.ConvertTo("output.pdf")
.WithOptions(new PdfConvertOptions())
.Convert();
Ejemplo de regla de sustitución (Procesamiento de texto / Hoja de cálculo / 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. Evento unificado
… (continúa la documentación)