Convertir HTML a Markdown en Java

Markdown (MD) es un lenguaje de marcado simple que utiliza una sintaxis de formato de texto sin formato. Se utiliza comúnmente para crear documentación y archivos Léame debido a su formato fácil de leer y escribir. Su diseño permite convertirlo fácilmente a muchos formatos de salida, pero inicialmente fue creado para convertir solo a HTML. Aspose.HTML for Java le permite realizar la conversión inversa y puede convertir fácilmente HTML a Markdown en Java.

En este artículo, encontrará información sobre cómo convertir HTML a Markdown usando los métodos convertHTML() de la clase Converter y cómo aplicar MarkdownSaveOptions.

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

Puede convertir HTML al formato Markdown utilizando Java y otros lenguajes de programación Java. 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 ejemplo 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
2String code = "<h1>Convert HTML to Markdown Using Java</h1>" +
3        "<h2>How to Convert HTML to MD in Java</h2>" +
4        "<p>The Aspose.HTML for Java library allows you to convert HTML to Markdown.</p>";
5FileHelper.writeAllText("conversion.html", code);
6
7// Call ConvertHTML() method to convert HTML to Markdown
8Converter.convertHTML("conversion.html", new MarkdownSaveOptions(), "conversion.md");

Opciones de guardado – Clase MarkdownSaveOptions

La clase MarkdownSaveOptions tiene una serie de propiedades que le dan control sobre el proceso de conversión. La opción más importante es “Características”. Esta opción le permite habilitar/deshabilitar la conversión del elemento en particular.

MethodDescription
getDefault()This method returns a set of options that are compatible with default Markdown documentation.
setFeatures(value)A flag set that controls which HTML elements are converted to Markdown.
setFormatter(value)This method gets or sets the Markdown formatting style.
getGit()This method returns a set of options that are compatible with GitLab Flavored Markdown.
getResourceHandlingOptions()Gets 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.

En el artículo Sintaxis de Markdown, encontrará información sobre los principales elementos de Markdown, detalles y ejemplos de la sintaxis de Markdown.

Convierta HTML a Markdown usando MarkdownSaveOptions

Método setFeatures()

La propiedad MarkdownSaveOptions.Features en Aspose.HTML for Java permite un control detallado sobre la conversión de Markdown al habilitar o deshabilitar funciones específicas a través de una combinación bit a bit de indicadores de la enumeración MarkdownFeatures. Por ejemplo,

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

  1. Un escenario popular es cargar un archivo HTML usando uno de los constructores HTMLDocument() de la clase HTMLDocument. Pero en este ejemplo, creamos una fuente HTML desde cero preparando el código HTML y guardándolo en un archivo.
  2. Cree un nuevo objeto MarkdownSaveOptions. Utilice setFeatures() para habilitar tanto la generación de hipervínculos como el formato automático de párrafos para la conversión de HTML a Markdown.
  3. Utilice el método convertHTML(sourcePath, opciones, outputPath) de la clase Converter para guardar HTML como un archivo 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 HTML code and save it to the file
 2String code = "<h1>Header 1</h1>" +
 3        "<h2>Header 2</h2>" +
 4        "<p>Hello, World!!</p>" +
 5        "<a href='aspose.com'>aspose</a>";
 6FileHelper.writeAllText("options.html", code);
 7
 8// Create an instance of SaveOptions and set up the rule:
 9// - only <a> and <p> elements will be converted to Markdown
10MarkdownSaveOptions options = new MarkdownSaveOptions();
11options.setFeatures(MarkdownFeatures.Link | MarkdownFeatures.AutomaticParagraph);
12
13// Call the ConvertHTML() method to convert the HTML to Markdown
14Converter.convertHTML("options.html", options, "options-output.md");

En el código Java anterior, se crea el objeto options y se configuran dos opciones usando el método setFeatures(). La función Link especifica que los elementos HTML <a> se convertirán a Markdown, mientras que la función AutomaticParagraph determina que los elementos HTML <p> se convertirán a Markdown. Cualquier otro elemento del documento HTML no se convertirá.

Método getGit()

GitHub Flavored Markdown es la versión de GitHub.com de la sintaxis de Markdown que proporciona un conjunto adicional de funciones útiles que facilitan el trabajo con contenido en GitHub.com. Es una extensión de la sintaxis estándar de Markdown y agrega muchas funciones adicionales, incluido resaltado de código, listas de tareas, tablas y más.

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 HTML code and save it to the file
2String code = "<h1>Header 1</h1>" +
3        "<h2>Header 2</h2>" +
4        "<p>Hello World!!</p>";
5FileHelper.writeAllText("document.html", code);
6
7// Call ConvertHTML() method to convert HTML to Markdown
8Converter.convertHTML("document.html", MarkdownSaveOptions.getGit(), "output-git.md");

En el ejemplo de Java anterior, el método convertHTML(sourcePath, options, outputPath) realiza la conversión. Se necesitan tres argumentos: sourcePath, options y outputPath. El segundo argumento es una instancia de MarkdownSaveOptions. Usamos el método getGit() en MarkdownSaveOptions que devuelve una instancia de options con Git habilitado. Habilitar Git en MarkdownSaveOptions significa que el archivo de salida de Markdown generado contendrá un Git-flavored Markdown, una sintaxis de Markdown que incluye características específicas de Git.

Limitación

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

HTML en línea

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”. Para usarlo, debes 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 an HTML code and save it to the file.
2String code = "text<div markdown='inline'><code>text</code></div>";
3FileHelper.writeAllText("inline.html", code);
4
5// Call ConvertHTML() method to convert HTML to Markdown.
6Converter.convertHTML("inline.html", new MarkdownSaveOptions(), "inline-html.md");
7
8// 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 anidamiento

Aunque Markdown admite una amplia gama de funciones, no todas se pueden combinar. Por ejemplo, los elementos de la lista dentro de los elementos de la tabla no se convertirán. 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

Conclusión

Aspose.HTML for Java proporciona potentes herramientas para la conversión de HTML a Markdown, aprovechando el método convertHTML() y MarkdownSaveOptions personalizables.

La clase MarkdownSaveOptions brinda a los desarrolladores un control detallado sobre el proceso de conversión. Incluye funciones para habilitar o deshabilitar elementos HTML específicos, establecer estilos de formato y manejar recursos de manera eficiente. Para escenarios avanzados, hay disponibles opciones predefinidas como GitHub Flavored Markdown (GFM), que permiten una integración perfecta con plataformas que admiten la sintaxis extendida de Markdown.

Sin embargo, existen limitaciones debido a la naturaleza liviana de Markdown. Ciertos elementos HTML, como <style> y <script>, carecen de equivalentes directos de Markdown y se omiten durante la conversión. No obstante, el soporte de Markdown para “HTML en línea” proporciona una solución alternativa para incluir elementos no compatibles.

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

Aspose.HTML ofrece un Convertidor de HTML a Markdown 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!

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.