Jsme potěšeni, že můžeme oznámit vydání GroupDocs.Markdown for .NET 26.3, dostupné od března 2026. Toto hlavní vydání představuje přepracované veřejné API, vlastní renderer Markdown založený na DOM, plnou kontrolu nad variantou Markdown, podporu asynchronního zpracování a řadu oprav chyb. Také přidává runtime balíčky NuGet rozdělené podle TFM a podporu pro .NET 8 a .NET 10.
Co je nového v tomto vydání
| Key | Category | Summary |
|---|---|---|
| MARKDOWNNET-33 | Feature | Rozdělení NuGet balíčku na runtime balíčky podle TFM |
| MARKDOWNNET-31 | Feature | Přidání podpory pro .NET 8 a .NET 10 |
| MARKDOWNNET-30 | Feature | Vlastní renderer Markdown založený na DOM |
| MARKDOWNNET-29 | Feature | Varování při konverzi a sjednocený model chyb |
| MARKDOWNNET-28 | Feature | Relativní cesty k obrázkům a nahrazování obrázků |
| MARKDOWNNET-27 | Feature | Posun úrovně nadpisu a generování YAML front matter |
| MARKDOWNNET-26 | Feature | Kontrola varianty Markdown a možnosti renderování tabulek |
| MARKDOWNNET-25 | Feature | Inspekce dokumentu bez konverze |
| MARKDOWNNET-24 | Feature | Asynchronní API |
| MARKDOWNNET-23 | Feature | Statické pohodlné metody a zjišťování formátů |
| MARKDOWNNET-20 | Enhancement | Revize a redesign API |
| MARKDOWNNET-8 | Feature | Podpora nahrazování obrázků během konverze do Markdown |
| MARKDOWNNET-35 | Bug Fix | Problémy s kvalitou a funkčností |
Změny ve veřejném API
Nové veřejné typy
DocumentInfo— metadata dokumentu (formát, počet stránek, název, autor, stav šifrování)MarkdownFlavor— výčet pro cílový dialekt Markdown (GitHub, CommonMark)IImageSavingHandler— rozhraní pro vlastní zpětná volání při ukládání obrázkůIUriSavingHandler— rozhraní pro vlastní zpětná volání při ukládání URIGroupDocsMarkdownException— obecná výjimka při konverziInvalidFormatException— poškozený nebo neznámý formát souboruDocumentProtectedException— špatné nebo chybějící heslo
Nové statické metody v MarkdownConverter
ToMarkdown(string sourcePath)a přetížení sLoadOptions/ConvertOptionsToFile(string sourcePath, string outputPath)a přetíženíGetInfo(string sourcePath)a přetíženíGetSupportedFormats()- Asynchronní varianty:
ToMarkdownAsync,ToFileAsync,GetInfoAsync
Nové instance metody v MarkdownConverter
GetDocumentInfo()ConvertAsync()a přetížení
Nové vlastnosti v ConvertOptions
ImageExportStrategy(nahrazujeExportStrategy)UriExportStrategyHeadingLevelOffsetIncludeFrontMatterFlavorMaxColumns,MaxRows,SheetSeparator,IncludeHiddenSheets
Nové vlastnosti v ConvertResult
Warnings— nefatální varování při konverzi
Nové vlastnosti v ExportImagesToFileSystemStrategy a CustomImagesStrategy
ImagesRelativePath— určuje cestu zapsanou v odkazech na obrázky v Markdown
Nové metody v CustomImageSavingArgs
SetReplacementImage(Stream imageStream)— nahrazení obsahu obrázku
Odstraněné typy
IExportStrategy— nahrazenoIImageExportStrategyaIUriExportStrategyDocumentConverterOptions— přejmenováno naConvertOptionsDocumentConverterResult— přejmenováno naConvertResult
Zlomové změny
Přejmenované typy
| Before | After |
|---|---|
DocumentConverterOptions |
ConvertOptions |
DocumentConverterResult |
ConvertResult |
Výčet FileFormat
Hodnoty na úrovni rodiny (FileFormat.WordProcessing, FileFormat.Spreadsheet) jsou nahrazeny konkrétními formáty (FileFormat.Docx, FileFormat.Xlsx atd.). Nové položky: FileFormat.Txt, FileFormat.Chm.
ConvertOptions a LoadOptions odděleny
ConvertOptions již nezdědí LoadOptions. Heslo a nápovědy k formátu se uvádějí v 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);
Strategie pro obrázky a URI rozděleny
Jedna vlastnost ExportStrategy je nahrazena dvěma typovými vlastnostmi:
var options = new ConvertOptions
{
ImageExportStrategy = new ExportImagesToFileSystemStrategy("images"),
UriExportStrategy = new CustomUriExportStrategy(handler)
};
Delegáty nahrazeny rozhraními
CustomImagesStrategy a CustomUriExportStrategy nyní přijímají rozhraní IImageSavingHandler a IUriSavingHandler místo delegátových zpětných volání.
LoadOptions.Extension a LoadOptions.MimeType jsou interní
Použijte new LoadOptions(FileFormat.Docx) místo přímého nastavení Extension nebo MimeType.
Nové funkce
Vlastní renderer Markdown založený na DOM
Knihovna již nedeleguje generování Markdown na třetí stranu. Vlastní renderer prochází model objektů dokumentu uzel po uzlu a přímo vytváří Markdown, což poskytuje plnou kontrolu nad každým aspektem výstupu.
Word/PDF/Ebook/Text/CHM dokumenty jsou renderovány s podporou odstavců, nadpisů (H1‑H6), tučného, kurzívy, přeškrtnutí, inline kódu, číslovaných i nečíslovaných seznamů s vnořením, tabulek (GFM syntaxe s rourami nebo fallback na kódový blok CommonMark), hypertextových odkazů a obrázků.
Tabulky jsou renderovány průchodem buňka po buňce, formátováním typovaných hodnot, sekcemi listů, ořezáváním sloupců/řádků s indikátory výpustky, filtrováním skrytých listů a vlastními oddělovači listů.
Statické pohodlné metody
Jednořádkové konverzní metody, které automaticky spravují zdroje:
string md = MarkdownConverter.ToMarkdown("report.docx");
MarkdownConverter.ToFile("report.docx", "report.md");
IReadOnlyList<FileFormat> formats = MarkdownConverter.GetSupportedFormats();
Asynchronní API
Asynchronní protějšky všech statických i instančních metod s podporou CancellationToken:
string md = await MarkdownConverter.ToMarkdownAsync("report.docx");
await MarkdownConverter.ToFileAsync("large.pdf", "output.md");
DocumentInfo info = await MarkdownConverter.GetInfoAsync("report.docx");
Inspekce dokumentu bez konverze
Získání metadat dokumentu bez provádění úplné konverze:
DocumentInfo info = MarkdownConverter.GetInfo("report.docx");
Console.WriteLine($"{info.FileFormat}, {info.PageCount} pages, by {info.Author}");
Kontrola varianty Markdown
Cílení na konkrétní dialekt Markdown:
var options = new ConvertOptions { Flavor = MarkdownFlavor.GitHub }; // pipe tables, strikethrough
var options = new ConvertOptions { Flavor = MarkdownFlavor.CommonMark }; // tables as code blocks
Možnosti renderování tabulek
Plná kontrola nad tím, jak jsou tabulky renderovány do Markdown:
var options = new ConvertOptions
{
MaxColumns = 8,
MaxRows = 50,
SheetSeparator = "\n---\n",
IncludeHiddenSheets = false
};
Posun úrovně nadpisu a YAML front matter
var options = new ConvertOptions
{
HeadingLevelOffset = 2, // # Title -> ### Title
IncludeFrontMatter = true // přidá YAML metadata na začátek
};
Varování při konverzi a sjednocený model chyb
Všechny metody Convert() nyní hází výjimku při selhání. ConvertResult nese nefatální varování:
ConvertResult result = converter.Convert();
foreach (string w in result.Warnings)
Console.WriteLine(w); // např. "Worksheet 'Data' truncated at 50 rows."
Nahrazování obrázků a relativní cesty
Nahraďte obrázky během konverze a ovládejte reference na cesty:
var strategy = new ExportImagesToFileSystemStrategy("c:/output/images")
{
ImagesRelativePath = "images" // 
};
Renderování obsahu Tabulky obsahu
Dokumenty s Tabulkou obsahu jsou renderovány jako čisté seznamy místo surových kódových polí:
- Introduction
- 1. Executive Summary
- 2. Company Overview
Příklad kódu
string md = MarkdownConverter.ToMarkdown("report.docx");
MarkdownConverter.ToFile("report.docx", "report.md");
IReadOnlyList<FileFormat> formats = MarkdownConverter.GetSupportedFormats();
Jak získat aktualizaci
NuGet
Aktualizujte na nejnovější balíček GroupDocs.Markdown přes NuGet (např. Install-Package GroupDocs.Markdown).