Wir freuen uns, die Veröffentlichung von GroupDocs.Markdown for .NET 26.3 bekannt zu geben, verfügbar seit März 2026. Dieses große Update führt eine neu gestaltete öffentliche API, einen benutzerdefinierten DOM‑basierten Markdown‑Renderer, vollständige Kontrolle über den Markdown‑Dialekt, Async‑Unterstützung und eine Reihe von Fehlerbehebungen ein. Außerdem werden pro‑TFM Runtime‑NuGet‑Pakete und Unterstützung für .NET 8 und .NET 10 hinzugefügt.
Neuigkeiten in dieser Version
| Schlüssel | Kategorie | Zusammenfassung |
|---|---|---|
| MARKDOWNNET-33 | Funktion | NuGet-Paket in pro‑TFM Runtime‑Pakete aufteilen |
| MARKDOWNNET-31 | Funktion | Unterstützung für .NET 8 und .NET 10 hinzufügen |
| MARKDOWNNET-30 | Funktion | Benutzerdefinierter DOM‑basierter Markdown‑Renderer |
| MARKDOWNNET-29 | Funktion | Konvertierungswarnungen und einheitliches Fehlermodell |
| MARKDOWNNET-28 | Funktion | Relative Bildpfade und Bildersatz |
| MARKDOWNNET-27 | Funktion | Überschriften‑Ebene‑Versatz und Generierung von YAML‑Front‑Matter |
| MARKDOWNNET-26 | Funktion | Steuerung des Markdown‑Dialekts und Optionen für die Tabellenkalkulationsdarstellung |
| MARKDOWNNET-25 | Funktion | Dokumenten‑Inspektion ohne Konvertierung |
| MARKDOWNNET-24 | Funktion | Async‑API |
| MARKDOWNNET-23 | Funktion | Statische Komfortmethoden und Format‑Erkennung |
| MARKDOWNNET-20 | Verbesserung | Überprüfung und Neugestaltung der API |
| MARKDOWNNET-8 | Funktion | Unterstützung für das Ersetzen von Bildern während der Konvertierung zu Markdown |
| MARKDOWNNET-35 | Fehlerbehebung | Qualitäts‑ und Funktionsprobleme |
Änderungen an der öffentlichen API
Neue öffentliche Typen
DocumentInfo— Dokumentmetadaten (Format, Seitenanzahl, Titel, Autor, Verschlüsselungsstatus)MarkdownFlavor— Aufzählung für den Ziel‑Markdown‑Dialekt (GitHub, CommonMark)IImageSavingHandler— Schnittstelle für benutzerdefinierte Bild‑Speicher‑CallbacksIUriSavingHandler— Schnittstelle für benutzerdefinierte URI‑Speicher‑CallbacksGroupDocsMarkdownException— allgemeine KonvertierungsausnahmeInvalidFormatException— beschädigtes oder nicht erkanntes DateiformatDocumentProtectedException— falsches oder fehlendes Passwort
Neue statische Methoden von MarkdownConverter
ToMarkdown(string sourcePath)und Überladungen mitLoadOptions/ConvertOptionsToFile(string sourcePath, string outputPath)und ÜberladungenGetInfo(string sourcePath)und ÜberladungenGetSupportedFormats()- Async‑Varianten:
ToMarkdownAsync,ToFileAsync,GetInfoAsync
Neue Instanzmethoden von MarkdownConverter
GetDocumentInfo()ConvertAsync()und Überladungen
Neue Eigenschaften von ConvertOptions
ImageExportStrategy(ersetztExportStrategy)UriExportStrategyHeadingLevelOffsetIncludeFrontMatterFlavorMaxColumns,MaxRows,SheetSeparator,IncludeHiddenSheets
Neue Eigenschaften von ConvertResult
Warnings— nicht‑kritische Konvertierungswarnungen
Neue Eigenschaften von ExportImagesToFileSystemStrategy und CustomImagesStrategy
ImagesRelativePath— steuert den Pfad, der in Markdown‑Bildreferenzen geschrieben wird
Neue Methoden von CustomImageSavingArgs
SetReplacementImage(Stream imageStream)— Bildinhalt ersetzen
Entfernte Typen
IExportStrategy— ersetzt durchIImageExportStrategyundIUriExportStrategyDocumentConverterOptions— umbenannt zuConvertOptionsDocumentConverterResult— umbenannt zuConvertResult
Breaking‑Änderungen
Umbenannte Typen
| Vorher | Nachher |
|---|---|
DocumentConverterOptions |
ConvertOptions |
DocumentConverterResult |
ConvertResult |
FileFormat‑Enum
Familien‑Ebene‑Werte (FileFormat.WordProcessing, FileFormat.Spreadsheet) werden durch spezifische Formate (FileFormat.Docx, FileFormat.Xlsx usw.) ersetzt. Neue Einträge: FileFormat.Txt, FileFormat.Chm.
ConvertOptions und LoadOptions getrennt
ConvertOptions erbt nicht mehr von LoadOptions. Passwort‑ und Format‑Hinweise werden auf LoadOptions gesetzt:
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);
Bild‑ und URI‑Strategien aufgeteilt
Einzelnes ExportStrategy‑Property wurde durch zwei typisierte Properties ersetzt:
var options = new ConvertOptions
{
ImageExportStrategy = new ExportImagesToFileSystemStrategy("images"),
UriExportStrategy = new CustomUriExportStrategy(handler)
};
Delegaten durch Schnittstellen ersetzt
CustomImagesStrategy und CustomUriExportStrategy akzeptieren jetzt die Schnittstellen IImageSavingHandler bzw. IUriSavingHandler anstelle von Delegaten‑Callbacks.
LoadOptions.Extension und LoadOptions.MimeType sind intern
Verwenden Sie new LoadOptions(FileFormat.Docx) anstelle der direkten Einstellung von Extension oder MimeType.
Neue Funktionen
Benutzerdefinierter DOM‑basierter Markdown‑Renderer
Die Bibliothek delegiert die Markdown‑Erzeugung nicht mehr an einen Drittanbieter‑Export. Ein benutzerdefinierter Renderer durchläuft das Dokument‑Objekt‑Modell Knoten für Knoten und erzeugt Markdown direkt, wodurch volle Kontrolle über jeden Aspekt der Ausgabe möglich ist.
Word/PDF/Ebook/Text/CHM‑Dokumente werden mit Unterstützung für Absätze, Überschriften (H1‑H6), Fett, Kursiv, Durchgestrichen, Inline‑Code, geordnete und ungeordnete Listen mit Verschachtelung, Tabellen (GFM‑Pipe‑Syntax oder CommonMark‑Code‑Block‑Fallback), Hyperlinks und Bilder gerendert.
Tabellenkalkulationen werden mit zellweiser Rasterdurchlauf, typbezogener Wertformatierung, Arbeitsblatt‑Abschnitten, Spalten‑/Zeilen‑Trunkierung mit Auslassungs‑Indikatoren, Filterung versteckter Blätter und benutzerdefinierten Blatt‑Trennzeichen gerendert.
Statische Komfortmethoden
Einzeilige Konvertierungsmethoden, die das Ressourcen‑Management automatisch übernehmen:
string md = MarkdownConverter.ToMarkdown("report.docx");
MarkdownConverter.ToFile("report.docx", "report.md");
IReadOnlyList<FileFormat> formats = MarkdownConverter.GetSupportedFormats();
Async‑API
Async‑Gegenstücke für alle statischen und Instanz‑Methoden mit CancellationToken‑Unterstützung:
string md = await MarkdownConverter.ToMarkdownAsync("report.docx");
await MarkdownConverter.ToFileAsync("large.pdf", "output.md");
DocumentInfo info = await MarkdownConverter.GetInfoAsync("report.docx");
Dokumenten‑Inspektion ohne Konvertierung
Abrufen von Dokument‑Metadaten, ohne eine vollständige Konvertierung durchzuführen:
DocumentInfo info = MarkdownConverter.GetInfo("report.docx");
Console.WriteLine($"{info.FileFormat}, {info.PageCount} pages, by {info.Author}");
Steuerung des Markdown‑Dialekts
Ziel eines spezifischen Markdown‑Dialekts festlegen:
var options = new ConvertOptions { Flavor = MarkdownFlavor.GitHub }; // Pipe‑Tabellen, Durchgestrichen
var options = new ConvertOptions { Flavor = MarkdownFlavor.CommonMark }; // Tabellen als Code‑Blöcke
Optionen für die Tabellenkalkulationsdarstellung
Vollständige Kontrolle darüber, wie Tabellenkalkulationen nach Markdown konvertiert werden:
var options = new ConvertOptions
{
MaxColumns = 8,
MaxRows = 50,
SheetSeparator = "\n---\n",
IncludeHiddenSheets = false
};
Überschriften‑Ebene‑Versatz und YAML‑Front‑Matter
var options = new ConvertOptions
{
HeadingLevelOffset = 2, // # Title -> ### Title
IncludeFrontMatter = true // YAML‑Metadaten voranstellen
};
Konvertierungswarnungen und einheitliches Fehlermodell
Alle Convert()‑Methoden werfen jetzt bei einem Fehler. ConvertResult enthält nicht‑kritische Warnungen:
ConvertResult result = converter.Convert();
foreach (string w in result.Warnings)
Console.WriteLine(w); // z. B. "Worksheet 'Data' truncated at 50 rows."
Bildersatz und relative Pfade
Bilder während der Konvertierung ersetzen und Pfad‑Referenzen steuern:
var strategy = new ExportImagesToFileSystemStrategy("c:/output/images")
{
ImagesRelativePath = "images" // 
};
Rendering des Inhaltsverzeichnisses
Dokumente mit Inhaltsverzeichnis werden als saubere Listen statt roher Feld‑Codes gerendert:
- Introduction
- 1. Executive Summary
- 2. Company Overview
Code‑Beispiel
string md = MarkdownConverter.ToMarkdown("report.docx");
MarkdownConverter.ToFile("report.docx", "report.md");
IReadOnlyList<FileFormat> formats = MarkdownConverter.GetSupportedFormats();
Wie Sie das Update erhalten
NuGet
Aktualisieren Sie auf das neueste GroupDocs.Markdown‑Paket über NuGet (z. B. Install-Package GroupDocs.Markdown).