\

c# Markdig を使用して Markdown から HTML に変換する方法

Markdig は Markdown を HTML に変換する.NETライブラリです。nuget から簡単にインストールして使用することができます。

この記事では、Markdigを使用してMarkdownからHTMLに変換する方法を紹介します。

1. Markdig のインストール

MarkdigはNugetに公開されています。URLは以下のとおりです。

https://www.nuget.org/packages/Markdig/

以下のコマンドで簡単にインストールが可能です。

1
> dotnet add package Markdig

2. Markdown ファイルを読み込み、HTMLに変換してファイルに出力するソースコード

以下のようになります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

using System;
using Markdig;

namespace MdBlogConverter
{
class Program
{
static void Main(string[] args)
{

string mdFolderPath = "./01_Input";
string outputFolderPath = "./02_Output/";

// get file list.
string[] files = System.IO.Directory.GetFiles(mdFolderPath, "*.md");
// loop
for(int i = 0; i < files.Length; i++)
{

outputCsHtmlFilePath = outputFolderPath + System.IO.Path.GetFileNameWithoutExtension(files[i]) + ".html";

// read all text from file and set to fileContents
string fileContents = System.IO.File.ReadAllText(files[i]);

//convert Mark down to html and set to mdContents
Markdig.MarkdownPipeline markdownPipeline = new MarkdownPipelineBuilder().UsePipeTables().Build();

string mdContents = Markdown.ToHtml(fileContents, markdownPipeline);

//write mark down data into outputCsHtmlFilePath
System.IO.File.AppendAllText(outputCsHtmlFilePath, mdContents);

}


}
}
}

まず、インプットフォルダは、カレントディレクトリの./01_Inputフォルダとします。

アウトプットフォルダは、カレントディレクトリの./02_Output/フォルダとします。

以下のコードで、インプットフォルダに格納されている *.mdファイルを検出してループ処理します。

1
2
3
4
5
6
7
// get file list. 
string[] files = System.IO.Directory.GetFiles(mdFolderPath, "*.md");
// loop
for(int i = 0; i < files.Length; i++)
{
...
}

インプットのファイルを全行読み込みます。

1
string fileContents = System.IO.File.ReadAllText(files[i]);

MarkdownPipeline を定義します。このパイプラインを定義することで、表形式のMarkdownをHTMLに変換することができるようになります。

1
Markdig.MarkdownPipeline markdownPipeline = new MarkdownPipelineBuilder().UsePipeTables().Build();

MarkdownをHTMLに変換し、変数に格納します。

1
string mdContents = Markdown.ToHtml(fileContents, markdownPipeline);

アウトプットファイルへ出力します。

1
System.IO.File.AppendAllText(outputCsHtmlFilePath, mdContents);

表形式のMarkdownがHTMLに変換されないときの対処方法

パイプラインが正しく定義されているか、HTML変換時にパイプラインが使用されているかを確認してください。

1
2
3
Markdig.MarkdownPipeline markdownPipeline = new MarkdownPipelineBuilder().UsePipeTables().Build();

string mdContents = Markdown.ToHtml(fileContents, markdownPipeline);

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

速攻でメモできる QuickNote リリースしました!

QuickNoteは動作が超軽量でサクサクかけるノートアプリです。一瞬の閃きを逃さずにノートを開き書き始めることができます。 アカウント登録も不要です。お試しあれ!

Excel操作をコマンドで! proBoarderExcel

Excelはマウスで操作するのが基本ですが、マウス操作に疲れてはいませんか? キーボードでExcel操作ができるようになるアプリです。オープンソースで無料です。

積み上げ! Daily Stack リリースしました!

Daily Stack は日々の積み上げを管理するToDoアプリです。過去の積み上げの振り返りだけでなく、ツイート機能もあります。 アカウント登録不要ですぐに使い始めることができます。

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱