GroupDocs.Conversion for .NET v26.6 is now available. This release adds richer conversion event support, custom image handling for PDF‑to‑Markdown, RTL auto‑detection for DOCX, and multiple stability improvements.

มีอะไรใหม่ในรุ่นนี้

คีย์ ประเภท สรุป
CONVERSIONNET-7934 ฟีเจอร์ PDF เป็น Markdown: อนุญาตการดึงภาพแบบกำหนดเองและการแทรกตัวแทน
CONVERSIONNET-8286 ฟีเจอร์ แนะนำตัวรวม ConversionEvents พร้อมลำดับความสำคัญของตัวจัดการต่อการเรียกแต่ละครั้ง/ทั่วโลก
CONVERSIONNET-8314 ฟีเจอร์ เพิ่มเหตุการณ์การแปลง OnFontSubstituted
CONVERSIONNET-8263 การปรับปรุง แยกแพ็กเกจ NuGet
CONVERSIONNET-8280 การปรับปรุง ตรวจจับทิศทาง RTL อัตโนมัติสำหรับ DOCX ที่ขาดหรือมีการทำเครื่องหมาย bidi ไม่ถูกต้อง
CONVERSIONNET-8325 การปรับปรุง การแปลง Spreadsheet เป็น PDF พร้อม SkipEmptyRowsAndColumns ทำให้ข้อความทับซ้อนเมื่อแผ่นงานมีฟอร์มคอนโทรล
CONVERSIONNET-7912 บั๊ก อักขระเสียหายในผลลัพธ์ JPEG/TIFF
CONVERSIONNET-8281 บั๊ก การแปลง XFA PDF เฉพาะเป็นภาพค้างและไม่ให้ผลลัพธ์ใดๆ
CONVERSIONNET-8321 บั๊ก ปัญหาในการแปลง publisher - ไม่สามารถโหลด Aspose.PDF

การเปลี่ยนแปลง Public API

⚠️ การเปลี่ยนแปลงที่ทำให้เกิดการแตกหัก

  • ชื่อเหตุการณ์ได้ถูกเปลี่ยนชื่อและโมเดลการรวมเหตุการณ์ได้เปลี่ยนแปลงแล้ว คุณสมบัติเหตุการณ์ต่อผลลัพธ์และเมธอดเชนแบบ fluent ที่มีอยู่เดิม ล้าสมัย และจะถูกลบในเวอร์ชัน v26.9
  • ConverterSettings.Listener และอินเทอร์เฟซ IConverterListener ล้าสมัย; พวกมันถูกแทนที่ด้วยเหตุการณ์วงจรชีวิตบน ConversionEvents
  • เหตุการณ์ per‑document เก่า OnConversionCompleted ได้รับการเปลี่ยนชื่อเป็น OnDocumentConverted ชื่อเดียวกันนี้ตอนนี้ใช้สำหรับเหตุการณ์วงจรชีวิตของ pipeline ที่ทำงานหนึ่งครั้งเมื่อการแปลงเสร็จสิ้น

1. เหตุการณ์การแทนที่ฟอนต์ใหม่

API คำอธิบาย
ConversionEvents.OnFontSubstituted ถูกเรียกเมื่อฟอนต์ที่เอกสารต้นฉบับต้องการหายไปและมีการใช้ฟอนต์ทดแทน (อัตโนมัติหรือผ่านกฎที่ผู้ใช้กำหนด)
FontSubstitutionContext ให้รายละเอียดเกี่ยวกับการแทนที่: SourceFileName, OriginalFontName, SubstituteFontName, Reason
FontSubstitute แสดงกฎการแทนที่ที่ผู้ใช้กำหนด (เช่น FontSubstitute.Create("MissingFont", "Arial"))

Reference:

ตัวอย่าง Classic 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());

ตัวอย่าง 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();

ตัวอย่างกฎการแทนที่ (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. เหตุการณ์รวม