Convertir HTML a Markdown en C#

Markdown es un lenguaje de marcado con una sintaxis de formato de texto sin formato. Markdown se utiliza a menudo como formato para documentación y archivos Léame, ya que permite escribir en un estilo fácil de leer y escribir. Es popular entre los redactores técnicos por su simplicidad de uso, aprendizaje liviano y amplio soporte. Su diseño permite convertirlo fácilmente a muchos formatos de salida, pero inicialmente fue creado para convertir solo a HTML. La biblioteca Aspose.HTML for .NET proporciona una conversión inversa de HTML a Markdown. Puede acceder y editar archivos Markdown o crear contenido nuevo desde cualquier dispositivo en cualquier editor de texto.

En este artículo, encontrará información sobre cómo convertir HTML a MD usando los métodos ConvertHTML() de la clase Converter y cómo aplicar MarkdownSaveOptions. Nuestros ejemplos de código le ayudan a convertir HTML a Markdown utilizando la biblioteca C#.

Convertidor HTML en línea

Puede convertir HTML a Markdown con Aspose.HTML for .NET API en tiempo real. Primero, cargue un archivo HTML desde su disco local y luego ejecute el ejemplo. En este ejemplo, las opciones de guardar están configuradas de forma predeterminada. Recibirá inmediatamente el resultado de la conversión de HTML a Markdown como un archivo Markdown separado.

                
            

HTML a Markdown por unas pocas líneas de código

Puede convertir HTML al formato Markdown utilizando C# y otros lenguajes de programación .NET. Los métodos estáticos de la clase Converter se utilizan principalmente como la forma más sencilla de convertir un código HTML a varios formatos. ¡El siguiente fragmento de código muestra cómo convertir HTML a Markdown literalmente con unas pocas líneas de código!

1// Prepare HTML code and save it to a file
2var code = "<h1>Header 1</h1>" +
3           "<h2>Header 2</h2>" +
4           "<p>Convert HTML to Markdown</p>";
5File.WriteAllText("convert.html", code);
6
7// Call ConvertHTML() method to convert HTML to Markdown
8Converter.ConvertHTML("convert.html", new MarkdownSaveOptions(), Path.Combine(OutputDir, "convert.md"));

Opciones de guardado – MarkdownSaveOptions

La funcionalidad de creación de Markdown se puede mejorar con opciones de guardado según sus necesidades. Las MarkdownSaveOptions tienen una serie de propiedades que le dan control sobre el proceso de conversión. La opción más importante es MarkdownSaveOptions.Features. Esta opción le permite habilitar/deshabilitar la conversión del elemento en particular.

PropertyDescription
DefaultThis property returns a set of options that are compatible with default Markdown documentation.
FeaturesA flag set that controls which HTML elements are converted to Markdown.
FormatterThis property gets or sets the Markdown formatting style.
GitThis property returns a set of options that are compatible with GitLab Flavored Markdown.
ResourceHandlingOptionsGets a ResourceHandlingOptions object which is used for configuration of resources handling.

Para obtener más información sobre MarkdownSaveOptions, lea el artículo Convertidores de ajuste fino.

Convierta HTML a Markdown usando MarkdownSaveOptions

Para convertir HTML a Markdown con la especificación MarkdownSaveOptions, debes seguir algunos pasos:

  1. Cargue un archivo HTML utilizando uno de los constructores HTMLDocument() de la clase HTMLDocument.
  2. Cree un nuevo objeto MarkdownSaveOptions.
  3. Utilice el método ConvertHTML() de la clase Converter para guardar HTML como un archivo Markdown. Debe pasar HTMLDocument, MarkdownSaveOptions y la ruta del archivo de salida al método ConvertHTML() para convertir HTML a Markdown.

El siguiente ejemplo muestra cómo procesar sólo enlaces y párrafos, el resto de elementos HTML permanecen como están:

 1// Prepare a path for converted file saving 
 2string savePath = Path.Combine(OutputDir, "options-output.md");
 3
 4// Prepare HTML code and save it to the file
 5var code = "<h1>Header 1</h1>" +
 6           "<h2>Header 2</h2>" +
 7           "<p>Hello, World!!</p>" +
 8           "<a href='aspose.com'>aspose</a>";
 9File.WriteAllText(Path.Combine(OutputDir, "options.html"), code);
10
11// Create an instance of SaveOptions and set up the rule: 
12// - only <a> and <p> elements will be converted to Markdown
13var options = new MarkdownSaveOptions();
14options.Features = MarkdownFeatures.Link | MarkdownFeatures.AutomaticParagraph;
15
16// Call the ConvertHTML() method to convert the HTML to Markdown
17Converter.ConvertHTML(Path.Combine(OutputDir, "options.html"), options, savePath);

Para convertir HTML a Markdown, puede definir su propio conjunto de reglas o utilizar las plantillas predefinidas. Por ejemplo, puede utilizar la plantilla basada en la sintaxis de GitLab Flavored Markdown:

 1// Prepare a path for converted file saving 
 2string savePath = Path.Combine(OutputDir, "output-git.md");
 3
 4// Prepare HTML code and save it to the file
 5var code = "<h1>Header 1</h1>" +
 6           "<h2>Header 2</h2>" +
 7           "<p>Hello, World!!</p>";
 8File.WriteAllText(Path.Combine(OutputDir, "document.html"), code);
 9
10// Call ConvertHTML() method to convert HTML to Markdown
11Converter.ConvertHTML(Path.Combine(OutputDir, "document.html"), MarkdownSaveOptions.Git, savePath);

Limitación

Markdown es una sintaxis ligera y fácil de usar. Sin embargo, no todos los elementos HTML se pueden convertir a Markdown ya que no existe un equivalente en la sintaxis de Markdown. Elementos como STYLE, SCRIPT, LINK, EMBED, etc. se descartarán durante la conversión.

HTML en línea – Inline HTML

Markdown le permite especificar el código HTML puro, que se representará tal cual. La característica que permite este comportamiento se llama “HTML en línea” (inline HTML). Para usarlo, debe colocar uno de los elementos específicos, admitidos por esta característica, al comienzo de la nueva línea. O puede marcar uno de estos elementos como “HTML en línea”, agregando el atributo markdown con el valor inline a este elemento. A continuación se muestra un pequeño ejemplo que demuestra cómo utilizar este atributo:

 1// Prepare a path for converted file saving 
 2string savePath = Path.Combine(OutputDir, "inline-html.md");
 3
 4// Prepare HTML code and save it to the file
 5var code = "text<div markdown='inline'><code>text</code></div>";
 6File.WriteAllText(Path.Combine(OutputDir, "inline.html"), code);
 7
 8// Call ConvertHTML() method to convert HTML to Markdown.
 9Converter.ConvertHTML(Path.Combine(OutputDir, "inline.html"), new MarkdownSaveOptions(), savePath);
10
11// Output file will contain: text\r\n<div markdown="inline"><code>text</code></div>

Como puede ver, el contenido del elemento <div> no se convierte a Markdown y el procesador Markdown lo trata tal cual. La lista de elementos que admiten esta función es diferente para cada procesador Markdown.

La especificación original de Markdown admite estas etiquetas: BLOCKQUOTE, H1, H2, H3, H4, H5, H6, P, PRE, OL, UL, DL, DIV, INS, DEL, IFRAME, FIELDSET, NOSCRIPT, FORM, MATH.

GitLab Flavored Markdown amplía esta lista con las siguientes etiquetas: ARTICLE, FOOTER, NAV, ASIDE, HEADER, ADDRESS, HR, DD, FIGURE, FIGCAPTION, ABBR, VIDEO, AUDIO, OUTPUT, CANVAS, SECTION, DETAILS, HGROUP, SUMMARY.

Características de anidamiento

Markdown admite muchas funciones, pero no todas se pueden utilizar juntas. Como ejemplo, los elementos de la lista dentro de los elementos de la tabla no se convertirían. La siguiente tabla muestra qué funciones se pueden anidar. Cada característica es miembro de la enumeración MarkdownFeatures.

Parent featureFeatures which can be processed inside
HeaderLink, Emphasis, Strong, InlineCode, Image, Strikethrough, Video
BlockquoteAny
ListAutomaticParagraph, Link, Emphasis, Strong, InlineCode, Image, LineBreak, Strikethrough, Video, TaskList, List
LinkEmphasis, Strong, InlineCode, Image, LineBreak, Strikethrough
AutomaticParagraphLink, Emphasis, Strong, InlineCode, Image, LineBreak, Strikethrough
StrikethroughLink, Emphasis, Strong, InlineCode, Image, LineBreak
TableVideo, Strikethrough, Image, InlineCode, Emphasis, Strong, Link
EmphasisLink, InlineCode, Image, LineBreak, Strikethrough, Video
StrongLink, InlineCode, Image, LineBreak, Strikethrough, Video

Puede descargar los ejemplos completos y los archivos de datos desde GitHub.

Descargue nuestra biblioteca Aspose.HTML for .NET que le permite convertir con éxito, rápida y fácilmente sus documentos HTML, MHTML, EPUB, SVG y Markdown a los formatos más populares.

Aspose.HTML ofrece un Convertidor de HTML a MD en línea gratuito que convierte HTML a Markdown con alta calidad, fácil y rápido. ¡Simplemente cargue, convierta sus archivos y obtenga resultados en unos segundos!

Texto “Convertidor de HTML a MD”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.