有没有一种简单的方法可以用 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 工作流程。