最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

markdown to html(Java方案)

2023-03-09 14:04 作者:云端的路燈  | 我要投稿


markdown to html


工程jar依賴

<!--引入Markdown轉(zhuǎn)HTML的插件-->
<dependency>
? ?<groupId>com.atlassian.commonmark</groupId>
? ?<artifactId>commonmark</artifactId>
? ?<version>0.17.0</version>
</dependency>

<!--擴展 標題-->
<dependency>
? ?<groupId>com.atlassian.commonmark</groupId>
? ?<artifactId>commonmark-ext-heading-anchor</artifactId>
? ?<version>0.17.0</version>
</dependency>

<!--擴展 表格-->
<dependency>
? ?<groupId>com.atlassian.commonmark</groupId>
? ?<artifactId>commonmark-ext-gfm-tables</artifactId>
? ?<version>0.17.0</version>
</dependency>



封裝工具類


import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.commonmark.Extension;
import org.commonmark.ext.gfm.tables.TableBlock;
import org.commonmark.ext.gfm.tables.TablesExtension;
import org.commonmark.ext.heading.anchor.HeadingAnchorExtension;
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;

/**
*/
public class MarkdownToHtmlUtils {

? ?/**
? ? * markdown格式轉(zhuǎn)換成HTML格式
? ? * @param markdown
? ? * @return
? ? */
? ?public static String markdownToHtml(String markdown) {
? ? ? ?Parser parser = Parser.builder().build();
? ? ? ?Node document = parser.parse(markdown);
? ? ? ?HtmlRenderer renderer = HtmlRenderer.builder().build();
? ? ? ?return renderer.render(document);
? ?}

? ?/**
? ? * 增加擴展[標題錨點,表格生成]
? ? * Markdown轉(zhuǎn)換成HTML
? ? * @param markdown
? ? * @return
? ? */
? ?public static String markdownToHtmlExtensions(String markdown) {
? ? ? ?//h標題生成id
? ? ? ?Set<Extension> headingAnchorExtensions = Collections.singleton(HeadingAnchorExtension.create());
? ? ? ?//轉(zhuǎn)換table的HTML
// ? ? ? ?List<Extension> tableExtension = Arrays.asList(TablesExtension.create());
? ? ? ?List<Extension> tableExtension = Collections.singletonList(TablesExtension.create());
? ? ? ?Parser parser = Parser.builder()
? ? ? ? ? ? ? ?.extensions(tableExtension)
? ? ? ? ? ? ? ?.build();
? ? ? ?Node document = parser.parse(markdown);
? ? ? ?HtmlRenderer renderer = HtmlRenderer.builder()
? ? ? ? ? ? ? ?.extensions(headingAnchorExtensions)
? ? ? ? ? ? ? ?.extensions(tableExtension)
? ? ? ? ? ? ? ?.attributeProviderFactory(new AttributeProviderFactory() {
? ? ? ? ? ? ? ? ? ?public AttributeProvider create(AttributeProviderContext context) {
? ? ? ? ? ? ? ? ? ? ? ?return new CustomAttributeProvider();
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?})
? ? ? ? ? ? ? ?.build();
? ? ? ?return renderer.render(document);
? ?}

? ?/**
? ? * 處理標簽的屬性
? ? */
? ?static class CustomAttributeProvider implements AttributeProvider {
? ? ? ?@Override
? ? ? ?public void setAttributes(Node node, String tagName, Map<String, String> attributes) {
? ? ? ? ? ?//改變a標簽的target屬性為_blank
? ? ? ? ? ?if (node instanceof Link) {
? ? ? ? ? ? ? ?attributes.put("target", "_blank");
? ? ? ? ? ?}
? ? ? ? ? ?if (node instanceof TableBlock) {
? ? ? ? ? ? ? ?attributes.put("class", "ui celled table");
? ? ? ? ? ?}
? ? ? ?}
? ?}

}


控制層

import com.pay.aide.docs.utils.MarkdownToHtmlUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

@Slf4j
@Controller
@RequestMapping(value = "/portal/docs/")
public class MarkdownToHtmlController {

? ?/**
? ? */
? ?@RequestMapping(value = "openapi-framework-{mdName}")
? ?public String openapiFramework(HttpServletRequest requests, HttpServletResponse responses, Model model, @PathVariable("mdName") String mdName) throws IOException {
? ? ? ?String markdownToHtml = MarkdownToHtmlUtils.markdownToHtmlExtensions(getJarResource(mdName));
? ? ? ?model.addAttribute("markdownToHtml", markdownToHtml);
? ? ? ?return "/docs/docs_index";
? ?}

? ?private String getJarResource(String mdName) throws IOException {
? ? ? ?Resource resource = new ClassPathResource("openapi/openapi-framework-" + mdName + ".md");
? ? ? ?byte[] binaryData = FileCopyUtils.copyToByteArray(resource.getInputStream());
? ? ? ?String mdData = new String(binaryData, StandardCharsets.UTF_8);
? ? ? ?return mdData;
? ?}

}


頁面展示層

<!DOCTYPE html>
<html lang="en">
<head>
</head>
${markdownToHtml}
<body>

</body>

</html>

markdown to html(Java方案)的評論 (共 條)

分享到微博請遵守國家法律
射洪县| 阿尔山市| 厦门市| 株洲市| 旬阳县| 长宁县| 凌海市| 芮城县| 翁牛特旗| 南川市| 博罗县| 改则县| 黎川县| 扶余县| 资溪县| 曲靖市| 神农架林区| 凯里市| 绵竹市| 泰州市| 临沂市| 金平| 呼图壁县| 玛纳斯县| 普兰县| 沂水县| 会同县| 涞水县| 叙永县| 股票| 永城市| 平泉县| 错那县| 汤原县| 鄯善县| 乳山市| 五常市| 广灵县| 舞阳县| 烟台市| 东丰县|