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‑Callbacks
  • IUriSavingHandler — Schnittstelle für benutzerdefinierte URI‑Speicher‑Callbacks
  • GroupDocsMarkdownException — allgemeine Konvertierungsausnahme
  • InvalidFormatException — beschädigtes oder nicht erkanntes Dateiformat
  • DocumentProtectedException — falsches oder fehlendes Passwort

Neue statische Methoden von MarkdownConverter

  • ToMarkdown(string sourcePath) und Überladungen mit LoadOptions/ConvertOptions
  • ToFile(string sourcePath, string outputPath) und Überladungen
  • GetInfo(string sourcePath) und Überladungen
  • GetSupportedFormats()
  • Async‑Varianten: ToMarkdownAsync, ToFileAsync, GetInfoAsync

Neue Instanzmethoden von MarkdownConverter

  • GetDocumentInfo()
  • ConvertAsync() und Überladungen

Neue Eigenschaften von ConvertOptions

  • ImageExportStrategy (ersetzt ExportStrategy)
  • UriExportStrategy
  • HeadingLevelOffset
  • IncludeFrontMatter
  • Flavor
  • MaxColumns, 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 durch IImageExportStrategy und IUriExportStrategy
  • DocumentConverterOptions — umbenannt zu ConvertOptions
  • DocumentConverterResult — umbenannt zu ConvertResult

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"  // ![](images/img-001.png)
};

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

Ressourcen