Trabalhando com Markdown em C# (.NET): melhores bibliotecas e exemplos de uso
Markdown é uma linguagem de marcação leve que permite formatar texto usando símbolos simples. É amplamente utilizado para escrever documentação, arquivos README, postagens em blogs e mensagens em fóruns. No ecossistema C# (.NET), existem várias bibliotecas poderosas para análise, conversão e geração de Markdown. Neste artigo, veremos as principais ferramentas e mostraremos como trabalhar com elas.
Bibliotecas populares para trabalhar com Markdown em C#
As soluções mais requisitadas no .NET:
- Markdig — biblioteca moderna, rápida e totalmente compatível com a especificação CommonMark. Suporta extensões (tabelas, tachado, emoji, diagramas, etc.).
- MarkdownSharp — parser leve do Stack Overflow. Simples, mas não suporta CommonMark e muitas extensões.
- CommonMark.NET — implementação oficial da especificação CommonMark. Adequado para compatibilidade rigorosa.
Neste guia, focaremos no Markdig, pois ele é o padrão de facto para projetos .NET modernos.
Instalação do Markdig
Adicione o pacote via NuGet Package Manager ou .NET CLI:
dotnet add package MarkdigOu via Package Manager Console:
Install-Package MarkdigUso básico: conversão de Markdown para HTML
O cenário mais simples é converter uma string Markdown em HTML. O Markdig faz isso em uma linha:
using Markdig;
string markdown = "# Título 1
Este é **texto em negrito** e *itálico*.
- Item de lista 1- Item de lista 2";
string html = Markdown.ToHtml(markdown);
Console.WriteLine(html);Resultado:
<h1>Título 1</h1><p>Este é <strong>texto em negrito</strong> e <em>itálico</em>.</p><ul><li>Item de lista 1</li><li>Item de lista 2</li></ul>Trabalhando com extensões do Markdig
O Markdig suporta várias extensões. Para usá-las, é necessário criar um pipeline:
using Markdig;using Markdig.Extensions.Tables;
var pipeline = new MarkdownPipelineBuilder() .UseAdvancedExtensions() // inclui todas as extensões principais .Build();
string markdown = "| Cabeçalho 1 | Cabeçalho 2 ||-------------|-------------|| Célula 1 | Célula 2 |";
string html = Markdown.ToHtml(markdown, pipeline);
Console.WriteLine(html);Este código gerará uma tabela HTML. É possível ativar extensões individuais: .UseTables(), .UseEmojiAndSmiley(), .UseTaskLists() e outras.
Convertendo HTML de volta para Markdown
A conversão reversa (HTML → Markdown) não está incluída no pacote padrão do Markdig, mas pode-se usar a biblioteca ReverseMarkdown:
dotnet add package ReverseMarkdownusing ReverseMarkdown;
var converter = new Converter();string html = "<h1>Olá, mundo!</h1><p>Isto é <strong>importante</strong></p>";string markdown = converter.Convert(html);
Console.WriteLine(markdown);Trabalhando com arquivos Markdown
Frequentemente, o Markdown é armazenado em arquivos. Exemplo de leitura e conversão:
using Markdig;
string filePath = "documento.md";string markdownContent = File.ReadAllText(filePath);string htmlContent = Markdown.ToHtml(markdownContent);
File.WriteAllText("saida.html", htmlContent);Criando HTML avançado com pipeline personalizado
Você pode ajustar o pipeline para tarefas específicas:
var pipeline = new MarkdownPipelineBuilder() Também na biblioteca
Envio de SMS em Go (Golang): integração com API de biblioteca
Trabalhando com datas em Rust: visão geral das bibliotecas de tempo e data
Migrações de banco de dados em Swift: ferramentas e práticas para iOS/macOS
Trabalhando com S3 e armazenamentos em nuvem em Go: biblioteca minio-go