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.Listenere a interfaceIConverterListenersão obsoletos; foram substituídos por eventos de ciclo de vida emConversionEvents.- O antigo evento
OnConversionCompletedpor documento foi renomeado paraOnDocumentConverted. 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());