C#에서 Markdown을 표시하는 라이브러리 MarkDig 소개

8362 단어 Markdown.NETC#

개요



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.cs
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 });
    }
}

동작시의 이미지는 다음과 같습니다.
왼쪽 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

좋은 웹페이지 즐겨찾기