GroupDocs.Conversion for .NET v26.6 está agora disponível. Esta versão adiciona suporte mais rico a eventos de conversão, manipulação personalizada de imagens para PDF‑para‑Markdown, detecção automática de RTL para DOCX e várias melhorias de estabilidade.

O que há de novo nesta versão

Chave Categoria Resumo
CONVERSIONNET-7934 Recurso PDF para Markdown: permitir extração personalizada de imagens e inserção de marcadores de posição
CONVERSIONNET-8286 Recurso Introduzir agregador ConversionEvents com precedência de manipulador por chamada/global
CONVERSIONNET-8314 Recurso Adicionar evento de conversão OnFontSubstituted
CONVERSIONNET-8263 Melhoria Divisão do pacote NuGet
CONVERSIONNET-8280 Melhoria Detecção automática de direção RTL para DOCX com marcação bidi ausente/incorreta
CONVERSIONNET-8325 Melhoria Conversões de planilha para PDF com SkipEmptyRowsAndColumns sobrepõem texto quando a planilha tem controles de formulário
CONVERSIONNET-7912 Erro Caracteres corrompidos na saída JPEG/TIFF
CONVERSIONNET-8281 Erro Conversão de um PDF XFA específico para imagem trava e não produz nenhum resultado
CONVERSIONNET-8321 Erro Problema ao converter publisher - Unable to load Aspose.PDF

Alterações na API pública

⚠️ Alterações que quebram compatibilidade

  • Os nomes dos eventos foram renomeados e o modelo de agregação de eventos foi alterado. As propriedades de evento por‑resultado existentes e os métodos de cadeia fluente são obsoletos e serão removidos na v26.9.
  • ConverterSettings.Listener e a interface IConverterListener são obsoletos; foram substituídos por eventos de ciclo de vida em ConversionEvents.
  • O antigo evento OnConversionCompleted por documento foi renomeado para OnDocumentConverted. O mesmo nome agora é usado para o evento de ciclo de vida da pipeline que dispara uma única vez ao final de uma execução de conversão.

1. Novo evento de substituição de fonte

API Descrição
ConversionEvents.OnFontSubstituted Dispara quando uma fonte necessária pelo documento de origem está ausente e uma substituta é usada (seja automaticamente ou via regra definida pelo usuário).
FontSubstitutionContext Fornece detalhes sobre a substituição: SourceFileName, OriginalFontName, SubstituteFontName, Reason.
FontSubstitute Representa uma regra de substituição fornecida pelo usuário (ex.: FontSubstitute.Create("MissingFont", "Arial")).

Referência:

Exemplo de API clássica

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

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

Exemplo de regra de substituição (Processamento de texto / Planilha / 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