אנחנו שמחים להודיע על השחרור של 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 — ממשק עבור קריאות חוזרות מותאמות לשמירת URI
  • GroupDocsMarkdownException — חריגה כללית של המרה
  • InvalidFormatException — פורמט קובץ פגום או לא מזוהה
  • DocumentProtectedException — סיסמה שגויה או חסרה

שיטות סטטיות חדשות ב‑MarkdownConverter

  • ToMarkdown(string sourcePath) וגרסאות עומס עם LoadOptions/ConvertOptions
  • ToFile(string sourcePath, string outputPath) וגרסאות עומס
  • GetInfo(string sourcePath) וגרסאות עומס
  • GetSupportedFormats()
  • גרסאות אסינכרוניות: ToMarkdownAsync, ToFileAsync, GetInfoAsync

שיטות מופע חדשות ב‑MarkdownConverter

  • GetDocumentInfo()
  • ConvertAsync() וגרסאות עומס

מאפיינים חדשים ב‑ConvertOptions

  • ImageExportStrategy (מחליף את ExportStrategy)
  • UriExportStrategy
  • HeadingLevelOffset
  • IncludeFrontMatter
  • Flavor
  • MaxColumns, MaxRows, SheetSeparator, IncludeHiddenSheets

מאפיינים חדשים ב‑ConvertResult

  • Warnings — אזהרות המרה שאינן גורמות לכישלון

מאפיינים חדשים ב‑ExportImagesToFileSystemStrategy וב‑CustomImagesStrategy

  • ImagesRelativePath — שולט בנתיב שנכתב בהתייחסות לתמונות ב‑Markdown

שיטות חדשות ב‑CustomImageSavingArgs

  • SetReplacementImage(Stream imageStream) — החלפת תוכן תמונה

סוגים שהוסרו

  • IExportStrategy — הוחלף ב‑IImageExportStrategy וב‑IUriExportStrategy
  • DocumentConverterOptions — שונה ל‑ConvertOptions
  • DocumentConverterResult — שונה ל‑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"  // ![](images/img-001.png)
};

רינדור תוכן עניינים

מסמכים עם תוכן עניינים נרנדרים כרשימות נקיות במקום קודי שדה גולמיים:

- 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).

משאבים