We’re pleased to announce the release of GroupDocs.Markdown for .NET 26.3, available as of March 2026. This major update introduces a redesigned public API, a custom DOM‑based Markdown renderer, full Markdown flavor control, async support, and a range of bug fixes. It also adds per‑TFM runtime NuGet packages and support for .NET 8 and .NET 10.

今回のリリースの新機能

キー カテゴリ 概要
MARKDOWNNET-33 機能 NuGet パッケージを TFM ごとのランタイム パッケージに分割
MARKDOWNNET-31 機能 .NET 8 と .NET 10 のサポートを追加
MARKDOWNNET-30 機能 カスタム DOM ベースの Markdown レンダラー
MARKDOWNNET-29 機能 変換時の警告と統一エラーモデル
MARKDOWNNET-28 機能 相対画像パスと画像置換
MARKDOWNNET-27 機能 見出しレベルオフセットと YAML フロントマター生成
MARKDOWNNET-26 機能 Markdown 方言制御とスプレッドシートレンダリングオプション
MARKDOWNNET-25 機能 変換せずにドキュメント情報を取得
MARKDOWNNET-24 機能 非同期 API
MARKDOWNNET-23 機能 静的便利メソッドとフォーマット検出
MARKDOWNNET-20 強化 API の見直しと再設計
MARKDOWNNET-8 機能 Markdown 変換時の画像置換サポート
MARKDOWNNET-35 バグ修正 品質および機能上の問題の修正

パブリック API の変更

新しいパブリック型

  • DocumentInfo — ドキュメントメタデータ(フォーマット、ページ数、タイトル、作者、暗号化状態)
  • MarkdownFlavor — 対象となる Markdown 方言(GitHub、CommonMark)を表す列挙型
  • IImageSavingHandler — カスタム画像保存コールバック用インターフェイス
  • IUriSavingHandler — カスタム URI 保存コールバック用インターフェイス
  • GroupDocsMarkdownException — 一般的な変換例外
  • InvalidFormatException — 破損または認識できないファイル形式
  • DocumentProtectedException — パスワードが間違っている、または未設定

MarkdownConverter の新しい静的メソッド

  • ToMarkdown(string sourcePath)LoadOptionsConvertOptions のオーバーロード
  • ToFile(string sourcePath, string outputPath) とそのオーバーロード
  • GetInfo(string sourcePath) とそのオーバーロード
  • GetSupportedFormats()
  • 非同期バリアント: ToMarkdownAsyncToFileAsyncGetInfoAsync

MarkdownConverter の新しいインスタンスメソッド

  • GetDocumentInfo()
  • ConvertAsync() とそのオーバーロード

ConvertOptions の新しいプロパティ

  • ImageExportStrategyExportStrategy の代替)
  • UriExportStrategy
  • HeadingLevelOffset
  • IncludeFrontMatter
  • Flavor
  • MaxColumnsMaxRowsSheetSeparatorIncludeHiddenSheets

ConvertResult の新しいプロパティ

  • Warnings — 致命的でない変換警告

ExportImagesToFileSystemStrategyCustomImagesStrategy の新しいプロパティ

  • ImagesRelativePath — Markdown の画像参照に書き込まれるパスを制御

CustomImageSavingArgs の新しいメソッド

  • SetReplacementImage(Stream imageStream) — 画像コンテンツを置換

削除された型

  • IExportStrategyIImageExportStrategyIUriExportStrategy に置き換えられた
  • DocumentConverterOptionsConvertOptions に名称変更
  • DocumentConverterResultConvertResult に名称変更

破壊的変更

変更前 | 変更後

変更前 変更後
DocumentConverterOptions ConvertOptions
DocumentConverterResult ConvertResult

FileFormat 列挙型

ファミリーレベルの値(FileFormat.WordProcessingFileFormat.Spreadsheet)は、特定のフォーマット(FileFormat.DocxFileFormat.Xlsx など)に置き換えられました。新しいエントリ: FileFormat.TxtFileFormat.Chm

ConvertOptionsLoadOptions の分離

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 プロパティは、2つの型付きプロパティに置き換えられました:

var options = new ConvertOptions
{
    ImageExportStrategy = new ExportImagesToFileSystemStrategy("images"),
    UriExportStrategy = new CustomUriExportStrategy(handler)
};

デリゲートがインターフェイスに置き換えられた

CustomImagesStrategyCustomUriExportStrategy は、デリゲートコールバックの代わりに IImageSavingHandlerIUriSavingHandler インターフェイスを受け取ります。

LoadOptions.ExtensionLoadOptions.MimeType は内部実装

ExtensionMimeType を直接設定する代わりに、new LoadOptions(FileFormat.Docx) を使用してください。

新機能

カスタム DOM ベースの Markdown レンダラー

このライブラリは、Markdown の生成をサードパーティのエクスポートに委任しなくなりました。カスタムレンダラーがドキュメントオブジェクトモデルをノードごとに走査し、直接 Markdown を生成するため、出力のすべての側面を完全に制御できます。

Word/PDF/Ebook/Text/CHM ドキュメント は、段落、見出し(H1‑H6)、太字、斜体、取り消し線、インラインコード、入れ子可能な順序付き・順序なしリスト、テーブル(GFM パイプ構文または 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 フロントマター

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

NuGet を介して最新の GroupDocs.Markdown パッケージにアップグレードしてください(例: Install-Package GroupDocs.Markdown)。

リソース