Nous sommes heureux d’annoncer la sortie de GroupDocs.Markdown for .NET 26.3, disponible depuis mars 2026. Cette mise à jour majeure introduit une API publique repensée, un moteur de rendu Markdown basé sur le DOM personnalisé, un contrôle complet du dialecte Markdown, la prise en charge asynchrone et une série de corrections de bugs. Elle ajoute également des packages NuGet d’exécution par TFM et la prise en charge de .NET 8 et .NET 10.
Nouveautés de cette version
| Clé | Catégorie | Résumé |
|---|---|---|
| MARKDOWNNET-33 | Fonctionnalité | Diviser le package NuGet en packages d’exécution par TFM |
| MARKDOWNNET-31 | Fonctionnalité | Ajouter la prise en charge de .NET 8 et .NET 10 |
| MARKDOWNNET-30 | Fonctionnalité | Moteur de rendu Markdown personnalisé basé sur le DOM |
| MARKDOWNNET-29 | Fonctionnalité | Avertissements de conversion et modèle d’erreur unifié |
| MARKDOWNNET-28 | Fonctionnalité | Chemins d’image relatifs et remplacement d’image |
| MARKDOWNNET-27 | Fonctionnalité | Décalage du niveau des titres et génération du front matter YAML |
| MARKDOWNNET-26 | Fonctionnalité | Contrôle du dialecte Markdown et options de rendu des feuilles de calcul |
| MARKDOWNNET-25 | Fonctionnalité | Inspection du document sans conversion |
| MARKDOWNNET-24 | Fonctionnalité | API asynchrone |
| MARKDOWNNET-23 | Fonctionnalité | Méthodes statiques pratiques et découverte des formats |
| MARKDOWNNET-20 | Amélioration | Révision et refonte de l’API |
| MARKDOWNNET-8 | Fonctionnalité | Prise en charge du remplacement des images lors de la conversion en Markdown |
| MARKDOWNNET-35 | Correction de bug | Problèmes de qualité et fonctionnels |
Modifications de l’API publique
Nouveaux types publics
DocumentInfo— métadonnées du document (format, nombre de pages, titre, auteur, statut de chiffrement)MarkdownFlavor— énumération du dialecte Markdown cible (GitHub, CommonMark)IImageSavingHandler— interface pour les rappels de sauvegarde d’image personnalisésIUriSavingHandler— interface pour les rappels de sauvegarde d’URI personnalisésGroupDocsMarkdownException— exception générale de conversionInvalidFormatException— format de fichier corrompu ou non reconnuDocumentProtectedException— mot de passe incorrect ou manquant
Nouvelles méthodes statiques sur MarkdownConverter
ToMarkdown(string sourcePath)et ses surcharges avecLoadOptions/ConvertOptionsToFile(string sourcePath, string outputPath)et ses surchargesGetInfo(string sourcePath)et ses surchargesGetSupportedFormats()- Variantes asynchrones :
ToMarkdownAsync,ToFileAsync,GetInfoAsync
Nouvelles méthodes d’instance sur MarkdownConverter
GetDocumentInfo()ConvertAsync()et ses surcharges
Nouvelles propriétés sur ConvertOptions
ImageExportStrategy(remplaceExportStrategy)UriExportStrategyHeadingLevelOffsetIncludeFrontMatterFlavorMaxColumns,MaxRows,SheetSeparator,IncludeHiddenSheets
Nouvelles propriétés sur ConvertResult
Warnings— avertissements de conversion non fatals
Nouvelles propriétés sur ExportImagesToFileSystemStrategy et CustomImagesStrategy
ImagesRelativePath— contrôle le chemin écrit dans les références d’image Markdown
Nouvelles méthodes sur CustomImageSavingArgs
SetReplacementImage(Stream imageStream)— substituer le contenu de l’image
Types supprimés
IExportStrategy— remplacé parIImageExportStrategyetIUriExportStrategyDocumentConverterOptions— renommé enConvertOptionsDocumentConverterResult— renommé enConvertResult
Changements majeurs
Types renommés
| Avant | Après |
|---|---|
DocumentConverterOptions |
ConvertOptions |
DocumentConverterResult |
ConvertResult |
Enum FileFormat
Les valeurs de niveau famille (FileFormat.WordProcessing, FileFormat.Spreadsheet) sont remplacées par des formats spécifiques (FileFormat.Docx, FileFormat.Xlsx, etc.). Nouvelles entrées : FileFormat.Txt, FileFormat.Chm.
Séparation de ConvertOptions et LoadOptions
ConvertOptions n’hérite plus de LoadOptions. Le mot de passe et les indices de format sont placés sur 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);
Division des stratégies d’image et d’URI
La propriété unique ExportStrategy est remplacée par deux propriétés typées :
var options = new ConvertOptions
{
ImageExportStrategy = new ExportImagesToFileSystemStrategy("images"),
UriExportStrategy = new CustomUriExportStrategy(handler)
};
Les délégués remplacés par des interfaces
CustomImagesStrategy et CustomUriExportStrategy acceptent désormais les interfaces IImageSavingHandler et IUriSavingHandler au lieu de rappels de délégués.
LoadOptions.Extension et LoadOptions.MimeType sont internes
Utilisez new LoadOptions(FileFormat.Docx) au lieu de définir directement Extension ou MimeType.
Nouvelles fonctionnalités
Moteur de rendu Markdown personnalisé basé sur le DOM
La bibliothèque ne délègue plus la génération de Markdown à une exportation tierce. Un moteur de rendu personnalisé parcourt le modèle d’objet du document nœud par nœud et produit du Markdown directement, offrant un contrôle complet sur chaque aspect du résultat.
Documents Word/PDF/Ebook/Text/CHM sont rendus avec prise en charge des paragraphes, des titres (H1‑H6), du gras, de l’italique, du barré, du code en ligne, des listes ordonnées et non ordonnées avec imbrication, des tableaux (syntaxe GFM pipe ou repli sur un bloc de code CommonMark), des hyperliens et des images.
Feuilles de calcul sont rendues avec un parcours cellule par cellule de la grille, un formatage des valeurs typées, des sections de feuilles de calcul, une troncature des colonnes/ lignes avec indicateurs d’ellipse, un filtrage des feuilles cachées et des séparateurs de feuilles personnalisés.
Méthodes statiques pratiques
Des méthodes de conversion en une ligne qui gèrent automatiquement la gestion des ressources :
string md = MarkdownConverter.ToMarkdown("report.docx");
MarkdownConverter.ToFile("report.docx", "report.md");
IReadOnlyList<FileFormat> formats = MarkdownConverter.GetSupportedFormats();
API asynchrone
Contreparties asynchrones pour toutes les méthodes statiques et d’instance avec prise en charge du CancellationToken :
string md = await MarkdownConverter.ToMarkdownAsync("report.docx");
await MarkdownConverter.ToFileAsync("large.pdf", "output.md");
DocumentInfo info = await MarkdownConverter.GetInfoAsync("report.docx");
Inspection du document sans conversion
Récupérez les métadonnées du document sans effectuer de conversion complète :
DocumentInfo info = MarkdownConverter.GetInfo("report.docx");
Console.WriteLine($"{info.FileFormat}, {info.PageCount} pages, by {info.Author}");
Contrôle du dialecte Markdown
Ciblez un dialecte Markdown spécifique :
var options = new ConvertOptions { Flavor = MarkdownFlavor.GitHub }; // tables en pipe, barré
var options = new ConvertOptions { Flavor = MarkdownFlavor.CommonMark }; // tables en blocs de code
Options de rendu des feuilles de calcul
Contrôle complet de la façon dont les feuilles de calcul sont rendues en Markdown :
var options = new ConvertOptions
{
MaxColumns = 8,
MaxRows = 50,
SheetSeparator = "\n---\n",
IncludeHiddenSheets = false
};
Décalage du niveau des titres et front matter YAML
var options = new ConvertOptions
{
HeadingLevelOffset = 2, // # Title -> ### Title
IncludeFrontMatter = true // préfixer les métadonnées YAML
};
Avertissements de conversion et modèle d’erreur unifié
Toutes les méthodes Convert() lèvent désormais une exception en cas d’échec. ConvertResult contient des avertissements non fatals :
ConvertResult result = converter.Convert();
foreach (string w in result.Warnings)
Console.WriteLine(w); // ex. "Worksheet 'Data' truncated at 50 rows."
Remplacement d’image et chemins relatifs
Remplacez les images lors de la conversion et contrôlez les références de chemin :
var strategy = new ExportImagesToFileSystemStrategy("c:/output/images")
{
ImagesRelativePath = "images" // 
};
Rendu de la table des matières
Les documents avec une table des matières sont rendus sous forme de listes propres au lieu de codes de champ bruts :
- Introduction
- 1. Executive Summary
- 2. Company Overview
Exemple de code
string md = MarkdownConverter.ToMarkdown("report.docx");
MarkdownConverter.ToFile("report.docx", "report.md");
IReadOnlyList<FileFormat> formats = MarkdownConverter.GetSupportedFormats();
Comment obtenir la mise à jour
NuGet
Mettez à jour vers le dernier package GroupDocs.Markdown via NuGet (par ex., Install-Package GroupDocs.Markdown).