GroupDocs.Conversion pro .NET v26.6 je nyní k dispozici. Toto vydání přidává bohatší podporu událostí konverze, vlastní zpracování obrázků pro PDF‑na‑Markdown, automatické rozpoznání RTL pro DOCX a řadu vylepšení stability.

Co je nového v tomto vydání

Klíč Kategorie Shrnutí
CONVERSIONNET-7934 Funkce PDF na Markdown: umožnit vlastní extrakci obrázků a vložení zástupného textu
CONVERSIONNET-8286 Funkce Zavést agregátor ConversionEvents s předností obsluhy na úrovni volání/globální
CONVERSIONNET-8314 Funkce Přidat událost konverze OnFontSubstituted
CONVERSIONNET-8263 Vylepšení Rozdělení NuGet balíčku
CONVERSIONNET-8280 Vylepšení Automatické rozpoznání RTL směru pro DOCX s chybějícím/nesprávným bidi markup
CONVERSIONNET-8325 Vylepšení Konverze Spreadsheet do PDF s přeskakováním prázdných řádků a sloupců překrývá text, když list obsahuje ovládací prvky formuláře
CONVERSIONNET-7912 Chyba Poškozené znaky ve výstupu JPEG/TIFF
CONVERSIONNET-8281 Chyba Převod konkrétního XFA PDF na obrázek se zasekne a nevytvoří žádný výsledek
CONVERSIONNET-8321 Chyba Problém s převodem publisher – Nelze načíst Aspose.PDF

Změny veřejného API

⚠️ Zlomové změny

  • Názvy událostí byly přejmenovány a model agregace událostí byl změněn. Stávající vlastnosti událostí na úrovni výsledku a fluent řetězcové metody jsou zastaralé a budou odstraněny ve verzi v26.9.
  • ConverterSettings.Listener a rozhraní IConverterListener jsou zastaralé; jsou nahrazeny životním cyklem událostí na ConversionEvents.
  • Stará událost OnConversionCompleted na úrovni dokumentu byla přejmenována na OnDocumentConverted. Stejný název se nyní používá pro událost životního cyklu pipeline, která se spustí jednou na konci běhu konverze.

1. Nová událost substituce písma

API Popis
ConversionEvents.OnFontSubstituted Spustí se, když je ve zdrojovém dokumentu požadováno písmo, které chybí, a je použita náhrada (automaticky nebo pomocí uživatelem definovaného pravidla).
FontSubstitutionContext Poskytuje podrobnosti o substituci: SourceFileName, OriginalFontName, SubstituteFontName, Reason.
FontSubstitute Reprezentuje uživatelem dodané pravidlo substituce (např. FontSubstitute.Create("MissingFont", "Arial")).

Reference:

Příklad klasického API

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

Příklad Fluent API

FluentConverter
    .WithEvents(e => e.OnFontSubstituted = ctx =>
        Console.WriteLine($"Font substituted: {ctx.Reason ?? ctx.OriginalFontName}"))
    .Load("source.docx")
    .ConvertTo("output.pdf")
    .WithOptions(new PdfConvertOptions())
    .Convert();

Příklad pravidla substituce (Word‑processing / Spreadsheet / 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. Jednotná událost