GroupDocs.Conversion עבור .NET v26.6 זמין כעת. גרסה זו מוסיפה תמיכה משופרת באירועי המרה, טיפול מותאם בתמונות עבור PDF‑ל‑Markdown, זיהוי אוטומטי של RTL עבור DOCX, ושיפורי יציבות מרובים.
מה חדש במהדורה זו
| מפתח | קטגוריה | סיכום |
|---|---|---|
| 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 | באג | המרת PDF XFA מסוים לתמונה נתקעת ולא מייצרת תוצאה |
| CONVERSIONNET-8321 | באג | בעיה בהמרת publisher – לא ניתן לטעון Aspose.PDF |
שינויים ב‑Public API
⚠️ שינויים שבורים
- שמות האירועים שונו ומודל צבירת האירועים השתנה. תכונות אירועי‑תוצאה קיימות ושיטות שרשרת Fluent הן מיושנות ותוסרנה ב‑v26.9.
ConverterSettings.ListenerוהממשקIConverterListenerהם מיושנים; הם הוחלפו באירועי מחזור החיים ב‑ConversionEvents.- אירוע
OnConversionCompletedהישן לכל מסמך שונה לשםOnDocumentConverted. אותו שם משמש כעת לאירוע מחזור החיים של הצינור שמופעל פעם אחת בסיום ריצת המרה.
1. אירוע החלפת גופנים חדש
| 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());
דוגמת 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());