C#에서 Markdown을 표시하는 라이브러리 MarkDig 소개
개요
MarkDig는 C#에서 Markdown을 표시할 수 있는 라이브러리입니다.
비슷한 기능을 가진 Marked.NET, MarkdownSharp보다 빠르고 움직이는 것 같습니다.
웹 앱에서 사용하는 경우 HTML로, WPF에서 사용하는 경우 전용 Control 또는 RichTextBox로 변환하여 표시할 수 있습니다.
HTML로 변환하는 경우
Markdown 문자열을 HTML로 변환하는 것은 Markdig.Markdown.ToHtml(元Markdown文字列)
뿐입니다.
다음의 코드에서는 덧붙여 입력 캐릭터 라인을 자원 파일로부터 취득해, 생성한 HTML을 파일에 출력, 소스 코드를 보기 쉽게 한다 Markdig.SyntaxHighlighting 확장을 도입했습니다.
private void CreateHtml()
{
var pipeline = new MarkdownPipelineBuilder()
.UseAdvancedExtensions()
.UseSyntaxHighlighting()
.Build();
string sourceText = Properties.Resources.MarkDownText;
string markdownText = Markdig.Markdown.ToHtml(sourceText, pipeline);
const string ouputPath = "result.html";
File.WriteAllText(ouputPath, markdownText);
}
출력 결과는 아래를 참조하십시오.
출력 결과 HTML 파일
WPF로 표시하는 경우
WPF로 표시하려면 FlowDocument
로 변환하고 RichTextBox
를 입력 할 수 있지만 Markdig-WPF 확장을 도입하고 MarkDownViewer
를 사용하는 것이 더 쉽습니다.<markdig:MarkdownViewer Markdown="元Markdown文字列" />
에서 볼 수 있습니다.
이하의 코드에서는 더해, 초기 입력 캐릭터 라인을 자원 파일로부터 취득해, TextBox에 지정. TextBox의 Text를 변경하면 MarkdownViewer에 반영됩니다. 또한 HyperLink를 클릭시 브라우저에서 열기 처리도 추가했습니다.
MainWindow.xaml<Window
x:Class="MarkDigTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:markdig="clr-namespace:Markdig.Wpf;assembly=Markdig.Wpf"
xmlns:properties="clr-namespace:MarkDigTest.Properties"
Title="MainWindow" Width="800" Height="650">
<FrameworkElement.CommandBindings>
<CommandBinding Command="{x:Static markdig:Commands.Hyperlink}" Executed="OpenHyperlink" />
</FrameworkElement.CommandBindings>
<UniformGrid Columns="2">
<TextBox
x:Name="sourceText"
AcceptsReturn="True"
Text="{x:Static properties:Resources.MarkDownText}" />
<markdig:MarkdownViewer x:Name="Viewer"
Markdown="{Binding Text, ElementName=sourceText}" />
</UniformGrid>
</Window>
MainWindow.cspublic partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void OpenHyperlink(object sender, ExecutedRoutedEventArgs e)
{
Process.Start(new ProcessStartInfo("cmd", $"/c start {e.Parameter}") { CreateNoWindow = true });
}
}
동작시의 이미지는 다음과 같습니다.
왼쪽 TextBox에 입력하면 오른쪽 MarkdownViewer에 반영됩니다.
전체 코드
WPF 버전의 전체 코드를 아래에 둡니다.
htps : // 기주 b. 코 m / 소 013 / 마크
환경
VisualStudio 2019
C# 8
.NET Core 3.1
MarkDigTest.csproj<ItemGroup>
<PackageReference Include="Markdig" Version="0.18.0" />
<PackageReference Include="Markdig.Wpf" Version="0.3.1" />
</ItemGroup>
참고
Markdown의 샘플은 일부 아래 링크를 기반으로합니다.
htps : // 이 m / tbpgr / ms / 989c6, f69377
HTML 파일을 표시하기 위해 GitHub.Pages를 사용했습니다.
h tps:// 퀵했다. 작은 m/눈_산과/있어 MS/5d8208C450195b65344c
Reference
이 문제에 관하여(C#에서 Markdown을 표시하는 라이브러리 MarkDig 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/soi/items/a149eec9228bd6d54054
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Markdown 문자열을 HTML로 변환하는 것은
Markdig.Markdown.ToHtml(元Markdown文字列)
뿐입니다.다음의 코드에서는 덧붙여 입력 캐릭터 라인을 자원 파일로부터 취득해, 생성한 HTML을 파일에 출력, 소스 코드를 보기 쉽게 한다 Markdig.SyntaxHighlighting 확장을 도입했습니다.
private void CreateHtml()
{
var pipeline = new MarkdownPipelineBuilder()
.UseAdvancedExtensions()
.UseSyntaxHighlighting()
.Build();
string sourceText = Properties.Resources.MarkDownText;
string markdownText = Markdig.Markdown.ToHtml(sourceText, pipeline);
const string ouputPath = "result.html";
File.WriteAllText(ouputPath, markdownText);
}
출력 결과는 아래를 참조하십시오.
출력 결과 HTML 파일
WPF로 표시하는 경우
WPF로 표시하려면 FlowDocument
로 변환하고 RichTextBox
를 입력 할 수 있지만 Markdig-WPF 확장을 도입하고 MarkDownViewer
를 사용하는 것이 더 쉽습니다.<markdig:MarkdownViewer Markdown="元Markdown文字列" />
에서 볼 수 있습니다.
이하의 코드에서는 더해, 초기 입력 캐릭터 라인을 자원 파일로부터 취득해, TextBox에 지정. TextBox의 Text를 변경하면 MarkdownViewer에 반영됩니다. 또한 HyperLink를 클릭시 브라우저에서 열기 처리도 추가했습니다.
MainWindow.xaml<Window
x:Class="MarkDigTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:markdig="clr-namespace:Markdig.Wpf;assembly=Markdig.Wpf"
xmlns:properties="clr-namespace:MarkDigTest.Properties"
Title="MainWindow" Width="800" Height="650">
<FrameworkElement.CommandBindings>
<CommandBinding Command="{x:Static markdig:Commands.Hyperlink}" Executed="OpenHyperlink" />
</FrameworkElement.CommandBindings>
<UniformGrid Columns="2">
<TextBox
x:Name="sourceText"
AcceptsReturn="True"
Text="{x:Static properties:Resources.MarkDownText}" />
<markdig:MarkdownViewer x:Name="Viewer"
Markdown="{Binding Text, ElementName=sourceText}" />
</UniformGrid>
</Window>
MainWindow.cspublic partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void OpenHyperlink(object sender, ExecutedRoutedEventArgs e)
{
Process.Start(new ProcessStartInfo("cmd", $"/c start {e.Parameter}") { CreateNoWindow = true });
}
}
동작시의 이미지는 다음과 같습니다.
왼쪽 TextBox에 입력하면 오른쪽 MarkdownViewer에 반영됩니다.
전체 코드
WPF 버전의 전체 코드를 아래에 둡니다.
htps : // 기주 b. 코 m / 소 013 / 마크
환경
VisualStudio 2019
C# 8
.NET Core 3.1
MarkDigTest.csproj<ItemGroup>
<PackageReference Include="Markdig" Version="0.18.0" />
<PackageReference Include="Markdig.Wpf" Version="0.3.1" />
</ItemGroup>
참고
Markdown의 샘플은 일부 아래 링크를 기반으로합니다.
htps : // 이 m / tbpgr / ms / 989c6, f69377
HTML 파일을 표시하기 위해 GitHub.Pages를 사용했습니다.
h tps:// 퀵했다. 작은 m/눈_산과/있어 MS/5d8208C450195b65344c
Reference
이 문제에 관하여(C#에서 Markdown을 표시하는 라이브러리 MarkDig 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/soi/items/a149eec9228bd6d54054
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<Window
x:Class="MarkDigTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:markdig="clr-namespace:Markdig.Wpf;assembly=Markdig.Wpf"
xmlns:properties="clr-namespace:MarkDigTest.Properties"
Title="MainWindow" Width="800" Height="650">
<FrameworkElement.CommandBindings>
<CommandBinding Command="{x:Static markdig:Commands.Hyperlink}" Executed="OpenHyperlink" />
</FrameworkElement.CommandBindings>
<UniformGrid Columns="2">
<TextBox
x:Name="sourceText"
AcceptsReturn="True"
Text="{x:Static properties:Resources.MarkDownText}" />
<markdig:MarkdownViewer x:Name="Viewer"
Markdown="{Binding Text, ElementName=sourceText}" />
</UniformGrid>
</Window>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void OpenHyperlink(object sender, ExecutedRoutedEventArgs e)
{
Process.Start(new ProcessStartInfo("cmd", $"/c start {e.Parameter}") { CreateNoWindow = true });
}
}
WPF 버전의 전체 코드를 아래에 둡니다.
htps : // 기주 b. 코 m / 소 013 / 마크
환경
VisualStudio 2019
C# 8
.NET Core 3.1
MarkDigTest.csproj<ItemGroup>
<PackageReference Include="Markdig" Version="0.18.0" />
<PackageReference Include="Markdig.Wpf" Version="0.3.1" />
</ItemGroup>
참고
Markdown의 샘플은 일부 아래 링크를 기반으로합니다.
htps : // 이 m / tbpgr / ms / 989c6, f69377
HTML 파일을 표시하기 위해 GitHub.Pages를 사용했습니다.
h tps:// 퀵했다. 작은 m/눈_산과/있어 MS/5d8208C450195b65344c
Reference
이 문제에 관하여(C#에서 Markdown을 표시하는 라이브러리 MarkDig 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/soi/items/a149eec9228bd6d54054
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<ItemGroup>
<PackageReference Include="Markdig" Version="0.18.0" />
<PackageReference Include="Markdig.Wpf" Version="0.3.1" />
</ItemGroup>
Markdown의 샘플은 일부 아래 링크를 기반으로합니다.
htps : // 이 m / tbpgr / ms / 989c6, f69377
HTML 파일을 표시하기 위해 GitHub.Pages를 사용했습니다.
h tps:// 퀵했다. 작은 m/눈_산과/있어 MS/5d8208C450195b65344c
Reference
이 문제에 관하여(C#에서 Markdown을 표시하는 라이브러리 MarkDig 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/soi/items/a149eec9228bd6d54054텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)