当前位置:首页> 正文

使用 Java 将 HTML 转换为 Markdown

使用 Java 将 HTML 转换为 Markdown

HTML to Markdown with Java

有没有一种简单的方法可以用 JAVA 将 HTML 转换为 markdown?

我目前正在使用 Java MarkdownJ 库将 markdown 转换为 html。

1
2
3
4
5
6
7
8
9
10
import com.petebevin.markdown.MarkdownProcessor;
...
public static String getHTML(String markdown) {
    MarkdownProcessor markdown_processor = new MarkdownProcessor();
    return markdown_processor.markdown(markdown);
}

public static String getMarkdown(String html) {
/* TODO Ask stackoverflow */
}

有一个很棒的 JS 库,叫做 Turndown,你可以在这里在线试用。它适用于接受答案错误的 html。

我需要它用于 Java(作为问题),所以我移植了它。 Java 的库称为 CopyDown,它具有与 Turndown 相同的测试套件,我已经用实际示例进行了尝试,接受的答案是抛出错误。

使用 gradle 安装:

1
2
3
dependencies {
        compile 'io.github.furstenheim:copy_down:1.0'
}

然后使用它:

1
2
3
4
5
6
7
8
9
10
CopyDown converter = new CopyDown();
String myHtml ="h1Some title/h1divSome htmlpAnother paragraph/p/div";
String markdown = converter.convert(myHtml);
System.out.println(markdown);
 Some title\
==========\
\
Some html\
\
Another paragraph\

PS。它有 MIT 许可证


我正在研究同样的问题,并尝试了几种不同的技术。

上面的答案可以工作。您可以使用 jTidy 库进行初始清理工作并将 HTML 转换为 XHTML。您使用上面链接的 XSLT 样式表。

不幸的是,Java 中没有提供一站式功能的库。您可以尝试将 Python 脚本 html2text 与 Jython 一起使用,但我还没有尝试过!


有一个名为 flexmark 的 Java 库具有这样的功能。
Maven 依赖:

1
2
3
4
5
dependency
    groupIdcom.vladsch.flexmark/groupId
    artifactIdflexmark-html2md-converter/artifactId
    version0.64.0/version
/dependency

使用 com.vladsch.flexmark.html2md.converter.FlexmarkHtmlConverter 类,您可以在一行中将 HTML 字符串转换为 Markdown 字符串,如下所示:

1
String md = FlexmarkHtmlConverter.builder().build().convert(html);

如果您正在使用 WMD 编辑器并想在服务器端获取 MarkDown 代码,只需在加载 wmd.js 脚本之前使用这些选项:

1
2
3
4
5
6
7
8
9
10
11
12
13
wmd_options = {
        // format sent to the server.  can also be"HTML"
        output:"Markdown",

        // line wrapping length for lists, blockquotes, etc.
        lineLength: 40,

        // toolbar buttons.  Undo and redo get appended automatically.
        buttons:"bold italic | link blockquote code image | ol ul heading hr",

        // option to automatically add WMD to the first textarea found.
        autostart: true
    };

有一个名为 pandoc 的 Haskell 库可以在大多数标记格式之间进行转换。
虽然它不是 Java 库,但可以通过其 CLI 在 Java 中使用。

您可以从这里获取并安装最新版本。在此处阅读入门指南。

1
2
3
4
5
6
7
var command ="pandoc --to=markdown_strict --output=result.md input.html";
var pandoc = new ProcessBuilder()
        .command(command.split(""))
        .directory(new File(".")) // Working directory
        .start();
pandoc.waitFor();
// The output result.md will be created in the working directory

此工具也可用于 GitHub Actions 工作流程。


展开全文阅读

相关内容