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.Listener y la interfaz IConverterListener son obsoletos; se sustituyen por eventos del ciclo de vida en ConversionEvents.
  • El antiguo evento OnConversionCompleted por documento se ha renombrado a OnDocumentConverted. 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)