GroupDocs.Conversion for .NET v26.6 متاح الآن. يضيف هذا الإصدار دعمًا أغنى لأحداث التحويل، ومعالجة مخصصة للصور عند التحويل من PDF إلى Markdown، واكتشاف تلقائي لاتجاه RTL في ملفات DOCX، والعديد من تحسينات الاستقرار.

ما الجديد في هذا الإصدار

المفتاح الفئة الملخص
CONVERSIONNET-7934 ميزة PDF إلى Markdown: السماح باستخراج الصور المخصصة وإدراج عنصر نائب
CONVERSIONNET-8286 ميزة تقديم مجمع ConversionEvents مع أولوية المعالج per‑call/global
CONVERSIONNET-8314 ميزة إضافة حدث التحويل OnFontSubstituted
CONVERSIONNET-8263 تحسين تقسيم حزمة NuGet
CONVERSIONNET-8280 تحسين اكتشاف تلقائي لاتجاه RTL في DOCX مع علامات bidi مفقودة/غير صحيحة
CONVERSIONNET-8325 تحسين تحويل جداول البيانات إلى PDF مع تخطي الصفوف والأعمدة الفارغة يتداخل مع النص عندما يحتوي الورق على عناصر تحكم نموذجية
CONVERSIONNET-7912 خطأ أحرف تالفة في مخرجات JPEG/TIFF
CONVERSIONNET-8281 خطأ تحويل PDF XFA معين إلى صورة يتعطل ولا ينتج أي نتيجة
CONVERSIONNET-8321 خطأ مشكلة في تحويل الناشر - غير قادر على تحميل Aspose.PDF

تغييرات API العامة

⚠️ تغييرات كسرية

  • تم إعادة تسمية أسماء الأحداث وتغيير نموذج تجميع الأحداث. خصائص الأحداث per‑result الحالية وطرق السلسلة fluent قديمة وسيتم إزالتها في الإصدار v26.9.
  • ConverterSettings.Listener وواجهة IConverterListener قديمة؛ تم استبدالهما بأحداث دورة الحياة على ConversionEvents.
  • تم إعادة تسمية حدث OnConversionCompleted per‑document القديم إلى OnDocumentConverted. يُستخدم الآن نفس الاسم لحدث دورة حياة خط الأنابيب الذي يُطلق مرة واحدة في نهاية عملية التحويل.

١. حدث استبدال الخط الجديد

API الوصف
ConversionEvents.OnFontSubstituted يُطلق عندما يكون الخط المطلوب من قبل المستند المصدر مفقودًا ويتم استخدام بديل (إما تلقائيًا أو عبر قاعدة معرفة من قبل المستخدم).
FontSubstitutionContext يوفر تفاصيل حول الاستبدال: SourceFileName، OriginalFontName، SubstituteFontName، Reason.
FontSubstitute يمثل قاعدة استبدال يحددها المستخدم (مثال: FontSubstitute.Create("MissingFont", "Arial")).

المرجع:

مثال 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());

مثال 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();

مثال قاعدة الاستبدال (معالجة النصوص / جدول بيانات / 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());

٢. حدث موحد