אנחנו שמחים להודיע על השחרור של GroupDocs.Markdown for .NET 26.3, זמין החל מ-מרץ 2026. עדכון משמעותי זה מציג API ציבורי מחדש, מנגנון רינדור Markdown מבוסס DOM מותאם, שליטה מלאה בטעם ה‑Markdown, תמיכה אסינכרונית, ומגוון תיקוני באגים. הוא גם מוסיף חבילות NuGet בזמן ריצה לכל TFM ותמיכה ב‑.NET 8 וב‑.NET 10.
מה חדש במהדורה זו
| מפתח | קטגוריה | סיכום |
|---|---|---|
| MARKDOWNNET-33 | תכונה | פיצול חבילת NuGet לחבילות זמן ריצה לכל TFM |
| MARKDOWNNET-31 | תכונה | הוספת תמיכה ב‑.NET 8 וב‑.NET 10 |
| MARKDOWNNET-30 | תכונה | מנגנון רינדור Markdown מבוסס DOM מותאם |
| MARKDOWNNET-29 | תכונה | אזהרות המרה ומודל שגיאות מאוחד |
| MARKDOWNNET-28 | תכונה | נתיבי תמונה יחסיים והחלפת תמונות |
| MARKDOWNNET-27 | תכונה | שינוי רמת כותרת ויצירת YAML front matter |
| MARKDOWNNET-26 | תכונה | שליטה בטעם ה‑Markdown ואפשרויות רינדור גיליונות |
| MARKDOWNNET-25 | תכונה | בדיקת מסמך ללא המרה |
| MARKDOWNNET-24 | תכונה | API אסינכרוני |
| MARKDOWNNET-23 | תכונה | שיטות נוחות סטטיות וגילוי פורמטים |
| MARKDOWNNET-20 | שיפור | סקירה ועיצוב מחדש של ה‑API |
| MARKDOWNNET-8 | תכונה | תמיכה בהחלפת תמונות במהלך המרה ל‑Markdown |
| MARKDOWNNET-35 | תיקון באג | בעיות איכות ותפקוד |
שינויי API ציבוריים
סוגים ציבוריים חדשים
DocumentInfo— מטא‑נתוני המסמך (פורמט, מספר עמודים, כותרת, מחבר, מצב הצפנה)MarkdownFlavor— enum לטעם Markdown יעד (GitHub, CommonMark)IImageSavingHandler— ממשק עבור קריאות חוזרות מותאמות לשמירת תמונותIUriSavingHandler— ממשק עבור קריאות חוזרות מותאמות לשמירת URIGroupDocsMarkdownException— חריגה כללית של המרהInvalidFormatException— פורמט קובץ פגום או לא מזוההDocumentProtectedException— סיסמה שגויה או חסרה
שיטות סטטיות חדשות ב‑MarkdownConverter
ToMarkdown(string sourcePath)וגרסאות עומס עםLoadOptions/ConvertOptionsToFile(string sourcePath, string outputPath)וגרסאות עומסGetInfo(string sourcePath)וגרסאות עומסGetSupportedFormats()- גרסאות אסינכרוניות:
ToMarkdownAsync,ToFileAsync,GetInfoAsync
שיטות מופע חדשות ב‑MarkdownConverter
GetDocumentInfo()ConvertAsync()וגרסאות עומס
מאפיינים חדשים ב‑ConvertOptions
ImageExportStrategy(מחליף אתExportStrategy)UriExportStrategyHeadingLevelOffsetIncludeFrontMatterFlavorMaxColumns,MaxRows,SheetSeparator,IncludeHiddenSheets
מאפיינים חדשים ב‑ConvertResult
Warnings— אזהרות המרה שאינן גורמות לכישלון
מאפיינים חדשים ב‑ExportImagesToFileSystemStrategy וב‑CustomImagesStrategy
ImagesRelativePath— שולט בנתיב שנכתב בהתייחסות לתמונות ב‑Markdown
שיטות חדשות ב‑CustomImageSavingArgs
SetReplacementImage(Stream imageStream)— החלפת תוכן תמונה
סוגים שהוסרו
IExportStrategy— הוחלף ב‑IImageExportStrategyוב‑IUriExportStrategyDocumentConverterOptions— שונה ל‑ConvertOptionsDocumentConverterResult— שונה ל‑ConvertResult
שינויים שבורים
סוגים ששונו שם
| לפני | אחרי |
|---|---|
DocumentConverterOptions |
ConvertOptions |
DocumentConverterResult |
ConvertResult |
Enum של FileFormat
ערכי רמת‑משפחה (FileFormat.WordProcessing, FileFormat.Spreadsheet) הוחלפו בפורמטים ספציפיים (FileFormat.Docx, FileFormat.Xlsx, וכו’). ערכים חדשים: FileFormat.Txt, FileFormat.Chm.
הפרדת ConvertOptions ו‑LoadOptions
ConvertOptions לא יורש יותר מ‑LoadOptions. סיסמה ורמזי פורמט מועברים ל‑LoadOptions:
var loadOptions = new LoadOptions(FileFormat.Docx) { Password = "secret" };
var convertOptions = new ConvertOptions { HeadingLevelOffset = 1 };
using var converter = new MarkdownConverter("file.docx", loadOptions);
var result = converter.Convert(convertOptions);
פיצול אסטרטגיות תמונה ו‑URI
מאפיין יחיד ExportStrategy הוחלף בשני מאפיינים טיפוסיים:
var options = new ConvertOptions
{
ImageExportStrategy = new ExportImagesToFileSystemStrategy("images"),
UriExportStrategy = new CustomUriExportStrategy(handler)
};
החלפת Delegates בממשקים
CustomImagesStrategy ו‑CustomUriExportStrategy מקבלים כעת את הממשקים IImageSavingHandler ו‑IUriSavingHandler במקום קריאות חוזרות (delegates).
LoadOptions.Extension ו‑LoadOptions.MimeType הפכו לפנימיים
השתמשו ב‑new LoadOptions(FileFormat.Docx) במקום להגדיר ישירות Extension או MimeType.
תכונות חדשות
מנגנון רינדור Markdown מבוסס DOM מותאם
הספרייה אינה משאילה יותר את יצירת ה‑Markdown ל‑export חיצוני. מנגנון רינדור מותאם עובר על מודל האובייקטים של המסמך צומת‑צומת ומייצר Markdown ישירות, מה שמאפשר שליטה מלאה על כל היבט של הפלט.
מסמכי Word/PDF/Ebook/Text/CHM נרנדרים עם תמיכה בפסקאות, כותרות (H1‑H6), מודגש, נטוי, קו מחיקה, קוד inline, רשימות מסודרות ולא‑מסודרות עם קידוד, טבלאות (תחביר GFM עם קו אופקי או fallback לקוד CommonMark), קישורים והדמיות.
גיליונות נרנדרים עם מעבר רשת תאים‑ב‑תא, עיצוב ערכי טיפוס, חלקי גיליון עבודה, קיצוץ עמודות/שורות עם אינדיקטורים של שלוש נקודות, סינון גיליונות מוסתרים, והפרדת גיליונות מותאמת.
שיטות נוחות סטטיות
שיטות המרה בשורה אחת שמטפלות בניהול משאבים אוטומטית:
string md = MarkdownConverter.ToMarkdown("report.docx");
MarkdownConverter.ToFile("report.docx", "report.md");
IReadOnlyList<FileFormat> formats = MarkdownConverter.GetSupportedFormats();
API אסינכרוני
גרסאות אסינכרוניות לכל השיטות הסטטיות והמתודות המופע עם תמיכה ב‑CancellationToken:
string md = await MarkdownConverter.ToMarkdownAsync("report.docx");
await MarkdownConverter.ToFileAsync("large.pdf", "output.md");
DocumentInfo info = await MarkdownConverter.GetInfoAsync("report.docx");
בדיקת מסמך ללא המרה
קבלת מטא‑נתוני המסמך ללא ביצוע המרה מלאה:
DocumentInfo info = MarkdownConverter.GetInfo("report.docx");
Console.WriteLine($"{info.FileFormat}, {info.PageCount} pages, by {info.Author}");
שליטה בטעם ה‑Markdown
בחירת דיאלקט Markdown ספציפי:
var options = new ConvertOptions { Flavor = MarkdownFlavor.GitHub }; // pipe tables, strikethrough
var options = new ConvertOptions { Flavor = MarkdownFlavor.CommonMark }; // tables as code blocks
אפשרויות רינדור גיליונות
שליטה מלאה על אופן רינדור הגיליונות ל‑Markdown:
var options = new ConvertOptions
{
MaxColumns = 8,
MaxRows = 50,
SheetSeparator = "\n---\n",
IncludeHiddenSheets = false
};
שינוי רמת כותרת ו‑YAML Front Matter
var options = new ConvertOptions
{
HeadingLevelOffset = 2, // # Title -> ### Title
IncludeFrontMatter = true // prepend YAML metadata
};
אזהרות המרה ומודל שגיאות מאוחד
כל השיטות Convert() זורקות כעת חריגה במקרה של כשל. ConvertResult נושא אזהרות שאינן גורמות לכישלון:
ConvertResult result = converter.Convert();
foreach (string w in result.Warnings)
Console.WriteLine(w); // e.g. "Worksheet 'Data' truncated at 50 rows."
החלפת תמונות ונתיבים יחסיים
החלפת תמונות במהלך ההמרה ושליטה בהתייחסות לנתיבים:
var strategy = new ExportImagesToFileSystemStrategy("c:/output/images")
{
ImagesRelativePath = "images" // 
};
רינדור תוכן עניינים
מסמכים עם תוכן עניינים נרנדרים כרשימות נקיות במקום קודי שדה גולמיים:
- Introduction
- 1. Executive Summary
- 2. Company Overview
דוגמת קוד
string md = MarkdownConverter.ToMarkdown("report.docx");
MarkdownConverter.ToFile("report.docx", "report.md");
IReadOnlyList<FileFormat> formats = MarkdownConverter.GetSupportedFormats();
איך לקבל את העדכון
NuGet
שדרגו לחבילה האחרונה של GroupDocs.Markdown דרך NuGet (לדוגמה, Install-Package GroupDocs.Markdown).