Java 使用 commonmark 将 Markdown 转换成 HTML

所需依赖:

Java 使用 commonmark 将 Markdown 转换成 HTML
<dependency>
    <groupId>com.atlassian.commonmark</groupId>
    <artifactId>commonmark</artifactId>
    <version>0.11.0</version>
</dependency>

代码示例:

import org.commonmark.node.Image;
import org.commonmark.node.Link;
import org.commonmark.node.Node;
import org.commonmark.parser.Parser;
import org.commonmark.renderer.html.AttributeProvider;
import org.commonmark.renderer.html.AttributeProviderContext;
import org.commonmark.renderer.html.AttributeProviderFactory;
import org.commonmark.renderer.html.HtmlRenderer;
import java.util.Map;

public class Md2Html {    public static void main(String[] args){        Parser parser = Parser.builder().build();
        Node document = parser.parse("```java\n" +
                "    // 根据 id 获取课程 \n" +
                "    @Override\n" +
                "    @GetMapping(\"/coursebase/get/{courseId}\")\n" +
                "    public CourseBase getCourseBaseById(@PathVariable(\"courseId\") String courseId) throws RuntimeException {\n" +
                "        return courseService.getCourseBaseById(courseId);\n" +
                "    }\n" +
                "```");
        HtmlRenderer renderer = HtmlRenderer.builder().
                attributeProviderFactory(new AttributeProviderFactory() {
                    @Override
                    public AttributeProvider create(AttributeProviderContext attributeProviderContext) {                        return new AttributeProvider() {
                            //                             自定义标签属性   可用单独类继承 AttributeProvider 接口
                            @Override
                            public void setAttributes(Node node, String s, Map<String, String> map) {                                if (node instanceof Image) {                                    map.put("style", "width:150px;height:200px;position:relative;left:50%;margin-left:-100px;");
                                }
                                if (node instanceof Link) {                                    map.put("target", "_blank");
                                }
                            }
                        };
                    }
                }).
                build();
        /*  lamada 改写
        *  HtmlRenderer renderer = HtmlRenderer.builder().
                attributeProviderFactory(attributeProviderContext -> (node, s, map) -> {                    if (node instanceof Image) {                        map.put("style", "width:150px;height:200px;position:relative;left:50%;margin-left:-100px;");
                    }
                    if (node instanceof Link) {                        map.put("target", "_blank");
                    }
                }).
                build();
        * */
        String mdHtml = renderer.render(document);
        mdHtml=mdHtml.replace("<pre>", "<pre class=\"fy-prettyprint linenums\">");
        System.out.println(mdHtml);
    }
}

效果:

<pre class="fy-prettyprint linenums"><code class="language-java">    // 根据 id 获取课程
    @Override
    @GetMapping(&quot;/coursebase/get/{courseId}&quot;)
    public CourseBase getCourseBaseById(@PathVariable(&quot;courseId&quot;) String courseId) throws RuntimeException {        return courseService.getCourseBaseById(courseId);
    }
</code></pre>


手机扫描二维码访问

本文标题:《Java 使用 commonmark 将 Markdown 转换成 HTML》作者:极四维博客
原文链接:https://cway.top/post/179.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年10月    »
123456
78910111213
14151617181920
21222324252627
28293031

搜索

控制面板

您好,欢迎到访网站!
  查看权限

最新留言

文章归档

  • 订阅本站的 RSS 2.0 新闻聚合