Java实现HTML转Markdown

38

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

我目前正在使用Java MarkdownJ库将Markdown转换为HTML。

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 */
}
5个回答

11

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

我需要它用于Java(就像问题一样),所以我对它进行了移植。Java的库名为CopyDown,它具有与Turndown相同的测试套件,并且我已经尝试过使用被接受的答案抛出错误的真实示例。

要使用gradle安装:

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

然后使用它:

CopyDown converter = new CopyDown();
String myHtml = "<h1>Some title</h1><div>Some html<p>Another paragraph</p></div>";
String markdown = converter.convert(myHtml);
System.out.println(markdown);
> Some title\n==========\n\nSome html\n\nAnother paragraph\n

PS. 它有 MIT 许可证


6

有一个名为 flexmark 的 Java 库具备此功能。 Maven 依赖项:

<dependency>
    <groupId>com.vladsch.flexmark</groupId>
    <artifactId>flexmark-html2md-converter</artifactId>
    <version>0.64.0</version>
</dependency>

使用类com.vladsch.flexmark.html2md.converter.FlexmarkHtmlConverter,您可以像以下一行代码那样将HTML字符串转换为Markdown字符串:
String md = FlexmarkHtmlConverter.builder().build().convert(html);

运行得非常好,替换了我以前使用“Remark”的旧代码! - fei0x
我已经添加了上述依赖项,但在我的捆绑包中出现错误,导入的包无法解析。 - Shaheena Sk
我添加了上述依赖项,但是在我的捆绑包中出现了错误,导入的包无法解析。 - undefined

3

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

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

不幸的是,在Java中没有一个一站式解决此问题的库。您可以尝试使用Python脚本html2text和Jython,但是我还没有尝试过这个!


2

如果您正在使用WMD编辑器,并且想在服务器端获取Markdown代码,请在加载wmd.js脚本之前使用以下选项:

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
    };

1
有一个名为 pandoc 的 Haskell 库,可以在大多数标记格式之间进行转换。
虽然它不是 Java 库,但可以通过其 CLI 在 Java 中使用。您可以从此处获取并 安装最新版本。阅读 入门指南
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 工作流中 使用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接