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.- تم إعادة تسمية حدث
OnConversionCompletedper‑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());