GroupDocs.Conversion برای .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 | بهبود | تبدیل Spreadsheet به PDF با SkipEmptyRowsAndColumns متن همپوشانی میکند وقتی شیت دارای فرمکنترل باشد |
| CONVERSIONNET-7912 | خطا | کاراکترهای خراب در خروجی JPEG/TIFF |
| CONVERSIONNET-8281 | خطا | تبدیل یک XFA PDF خاص به تصویر متوقف میشود و هیچ نتیجهای تولید نمیکند |
| CONVERSIONNET-8321 | خطا | مشکل در تبدیل publisher - عدم توانایی بارگذاری Aspose.PDF |
تغییرات API عمومی
⚠️ تغییرات ناسازگار
- نامهای رویداد تغییر نام دادهاند و مدل تجمیع رویدادها نیز تغییر کرده است. ویژگیهای رویداد per‑result موجود و متدهای زنجیرهای fluent منسوخ شدهاند و در نسخه v26.9 حذف خواهند شد.
ConverterSettings.Listenerو اینترفیسIConverterListenerمنسوخ شدهاند؛ آنها با رویدادهای چرخهحیات درConversionEventsجایگزین شدهاند.- رویداد قدیمی
OnConversionCompletedبرای هر سند بهOnDocumentConvertedتغییر نام یافت. همین نام اکنون برای رویداد چرخهحیات لولهکشی استفاده میشود که یک بار در پایان یک اجرای تبدیل فراخوانی میشود.
1. رویداد جدید جایگذاری فونت
| API | توضیح |
|---|---|
ConversionEvents.OnFontSubstituted |
زمانی که فونتی که سند منبع به آن نیاز دارد موجود نباشد و یک جایگزین استفاده شود (بهصورت خودکار یا از طریق قانون تعریفشده توسط کاربر) فراخوانی میشود. |
FontSubstitutionContext |
جزئیات جایگذاری را فراهم میکند: SourceFileName، OriginalFontName، SubstituteFontName، Reason. |
FontSubstitute |
نمایانگر یک قانون جایگذاری توسط کاربر است (مثلاً FontSubstitute.Create("MissingFont", "Arial")). |
مرجع:
مثال 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());