Convertissez Markdown en HTML avec flexmark-java

Aperçu

--Convertir des documents Markdown en documents HTML à l'aide de flexmark-java, la bibliothèque Markdown de Java

Exemple de programme

Liste des fichiers

├── build.gradle
└── src
    └── main
        ├── java
        │   └── com
        │       └── example
        │           └── App.java
        └── resources
            └── markdown.md

App.java

package com.example;

import com.vladsch.flexmark.ext.anchorlink.AnchorLinkExtension;
import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughExtension;
import com.vladsch.flexmark.ext.tables.TablesExtension;
import com.vladsch.flexmark.ext.toc.TocExtension;
import com.vladsch.flexmark.html.HtmlRenderer;
import com.vladsch.flexmark.parser.Parser;
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.data.MutableDataSet;

import java.io.IOException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;

public class App {

  public static void main(String[] args) throws IOException {

    //Définir des options pour prendre en charge différentes notations Markdown
    MutableDataSet options = new MutableDataSet();
    options.set(Parser.EXTENSIONS,
      Arrays.asList(
        AnchorLinkExtension.create(), //Ancrer le titre
        StrikethroughExtension.create(), //Correspond à la ligne d'annulation
        TablesExtension.create(), //Compatible avec les tables
        TocExtension.create() // [TOC]Générer une table des matières dans la partie de
      ));

    //Analyseur Markdown et moteur de rendu HTML disponibles
    Parser parser = Parser.builder(options).build();
    HtmlRenderer renderer = HtmlRenderer.builder(options).build();

    //Lire le fichier Markdown
    URL url = App.class.getClassLoader().getResource("markdown.md");
    List<String> lines = Files.readAllLines(Paths.get(url.getPath()), StandardCharsets.UTF_8);
    String markdown = String.join("\n", lines);

    //Convertir Markdown en HTML et sortie
    Node document = parser.parse(markdown);
    String html = renderer.render(document);
    System.out.println(html);
  }
}

build.gradle

Décrivez les paramètres pour introduire flexmark-java.

build.gradle


plugins {
  id 'java'
  id 'application'
}

group 'com.example'
version '0.0.1'

sourceCompatibility = 1.8

repositories {
  mavenCentral()
}

dependencies {
  // flexmark-java 0.50.Présenter 42
  implementation 'com.vladsch.flexmark:flexmark-all:0.50.42'
}

application {
    mainClassName = 'com.example.App'
}

Fichier Markdown

Document Markdown utilisé comme source de conversion.

[TOC levels=1-2]

# Markdown

## Paragraphs

Hello, world.

Goodbye, world.

## Emphasis

*Hello, world.*

**Goodbye, world.**

~~Hello, Goodbye.~~

## Bullet List

- Hello
- World
- Goodbye

## Numbered list

1. Hello
2. World
3. Goodbye

## Table

| Left align | Right align | Center align |
|:-----------|------------:|:------------:|
| A          | B           | C            |
| Hello      | world       | Goodbye      |

## URL

http://example.com/

[example.com](http://example.com/)

<a href="http://example.com/">example.com</a>

## Image

![Image](image.png "image")

## Quote

> Hello, world.
> Goorbye, world.

## Source Code

```java
public class A {
  public static void main(String[] args) {
    System.out.println("Hello, world");
  }
}
``` 

Document HTML de sortie converti

<ul>
<li><a href="#markdown">Markdown</a>
<ul>
<li><a href="#paragraphs">Paragraphs</a></li>
<li><a href="#emphasis">Emphasis</a></li>
<li><a href="#bullet-list">Bullet List</a></li>
<li><a href="#numbered-list">Numbered list</a></li>
<li><a href="#table">Table</a></li>
<li><a href="#url">URL</a></li>
<li><a href="#image">Image</a></li>
<li><a href="#quote">Quote</a></li>
<li><a href="#source-code">Source Code</a></li>
</ul>
</li>
</ul>
<h1 id="markdown"><a href="#markdown" id="markdown">Markdown</a></h1>
<h2 id="paragraphs"><a href="#paragraphs" id="paragraphs">Paragraphs</a></h2>
<p>Hello, world.</p>
<p>Goodbye, world.</p>
<h2 id="emphasis"><a href="#emphasis" id="emphasis">Emphasis</a></h2>
<p><em>Hello, world.</em></p>
<p><strong>Goodbye, world.</strong></p>
<p><del>Hello, Goodbye.</del></p>
<h2 id="bullet-list"><a href="#bullet-list" id="bullet-list">Bullet List</a></h2>
<ul>
<li>Hello</li>
<li>World</li>
<li>Goodbye</li>
</ul>
<h2 id="numbered-list"><a href="#numbered-list" id="numbered-list">Numbered list</a></h2>
<ol>
<li>Hello</li>
<li>World</li>
<li>Goodbye</li>
</ol>
<h2 id="table"><a href="#table" id="table">Table</a></h2>
<table>
<thead>
<tr><th align="left">Left align</th><th align="right">Right align</th><th align="center">Center align</th></tr>
</thead>
<tbody>
<tr><td align="left">A</td><td align="right">B</td><td align="center">C</td></tr>
<tr><td align="left">Hello</td><td align="right">world</td><td align="center">Goodbye</td></tr>
</tbody>
</table>
<h2 id="url"><a href="#url" id="url">URL</a></h2>
<p>http://example.com/</p>
<p><a href="http://example.com/">example.com</a></p>
<p><a href="http://example.com/">example.com</a></p>
<h2 id="image"><a href="#image" id="image">Image</a></h2>
<p><img src="image.png " alt="Image" title="image" /></p>
<h2 id="quote"><a href="#quote" id="quote">Quote</a></h2>
<blockquote>
<p>Hello, world.
Goorbye, world.</p>
</blockquote>
<h2 id="source-code"><a href="#source-code" id="source-code">Source Code</a></h2>
<pre><code class="language-java">public class A {
  public static void main(String[] args) {
    System.out.println(&quot;Hello, world&quot;);
  }
}
</code></pre>

Cette opération vérifie l'environnement

Matériel de référence

Recommended Posts

Convertissez Markdown en HTML avec flexmark-java
Tweak Markdown avec Java flexmark-java
Convertissez le code de saut de ligne en une balise de saut de ligne html avec Thymeleaf et sortie
Convertir le langage C en JavaScript avec Emscripten
Conversion de JSON en TSV et TSV en JSON avec Ruby
Convertissez une chaîne en un tableau caractère par caractère avec Swift
Comment intégrer des variables JavaScript dans HTML avec Thymeleaf
Convertissez de gros fichiers XLSX en CSV avec Apache POI
Convertir un tableau bidimensionnel au format csv avec l'API Java 8 Stream
Java pour jouer avec Function
Je veux convertir des caractères ...
Convertir en chaîne Ruby Leet
Convertir un objet sérialisable en octet []
Comment numéroter (nombre) avec html.erb
Comment mettre à jour avec activerecord-import
Connectez-vous à DB avec Java
Connectez-vous à MySQL 8 avec Java
Conversion de ○ mois en ○ années ○ mois
Comment convertir la base Java
[Java] Convertir ArrayList en tableau
Connectez-vous à Oracle avec Eclipse!
Analyse HTML (scraping) avec JAVA
Modifiez SVG avec Java + Apache Batik et convertissez-le en PNG ou JPEG