最近需要将Md文件转换成HTML格式,有多种方法实现这个目标
一是使用开源js修改,二是使用使用Pandoc这个免费强大的工具来转换
如果是想实现MarkDown转换成Word格式,可以先将Markdown转为HTML,再将HTML转换为Word
一、Pandoc命令介绍
Pandoc是一个强大的格式语言转换工具,比如可用Pandoc命令将Markdown格式文件转换成HTML格式文件。如果您需要将文件从一种标记格式转换为另一种标记格式,pandoc 就是您的瑞士军刀。Pandoc 可以在以下格式之间进行转换:
几乎无所不能
二、Pandoc安装方法
安装 pandoc: 从http://Pandoc.org 官网 获取最新 pandoc 版本 安装程序。
下载适用于 Windows(64 位)的最新安装程序
有关安装 pandoc 的替代方法,请参阅下面的操作系统标题。
Windows
最简单方法:pandoc 的下载页面有一个包安装程序。这将安装 pandoc,替换旧版本,并更新您的路径以包含安装 pandoc 二进制文件的目录。
如果您不想使用 msi 安装程序,我们还提供了一个 zip 文件,其中包含 pandoc 的二进制文件和文档。只需解压缩此文件并将二进制文件移动到您选择的目录即可。
或者,您可以使用Chocolatey安装 pandoc :
choco install pandoc
Chocolatey 还可以安装与 Pandoc 集成的其他软件。例如,要安装rsvg-convert(从librsvg,涵盖不支持 SVG 的格式)、Python(使用 Pandoc 过滤器)和MiKTeX (使用LaTeX排版 PDF ):
choco install rsvg-convert python miktex
或者,您可以使用 winget 安装pandoc:
winget install pandoc
使用多种安装方法可能会导致 pandoc 的两个单独安装;建议在切换到其他安装方法之前正确卸载 pandoc。
默认情况下,Pandoc 使用 LaTeX 创建 PDF。我们建议通过MiKTeX安装它。
Windows
直接下载Msi Zip. 也可以使用下面方法
choco install pandoc
# 其他Pandoc软件安装
choco install rsvg-convert python miktex
MacOs
brew install pandoc
# Pandoc解析器
brew install pandoc-citeproc
# 其他Pandoc软件安装
brew install librsvg python homebrew/cask/basictex
Ubuntu/Debian
sudo apt install pandoc
# 如果想输出PDF,可以安装TeX Live
sudo apt install texlive
Linux
sudo yum install pandoc
# 如果想输出PDF,可以安装TeX Live
sudo yum install texlive
三、具体转换命令
具体转换命令如下:
pandoc --standalone --self-contained --css pandoc.css 源文件.md --output 目标文件.html
以上转换命令中选项含义介绍如下。
1、“–standalone”
为目标格式文件增加合适的“header”和“footer”。如果目标格式是“HTML”,那么通过该选项可解决“由于未设置合适的字符编码,而导致的乱码问题”。
2、“–self-contained”
如果目标格式是“HTML”,那么可得到如下效果:在转换得到目标HTML文件的过程中,会将依赖的“脚本,CSS,图片,视频”等文件的内容内嵌到目标HTML文件中。
3、“–css pandoc.css”
使得目标格式文件最后使用“pandoc.css”文件作为CSS文件,否则,使用默认的CSS文件有可能只能得到丑陋的展现效果。
4、“原文件.md”
原文件,从中也可以知道原文件的格式为“Markdown”。
5、“–output 目标文件.html”
指定目标文件路径,从中也可以知道目标文件的格式为“HTML”。
上面是Md 转 HTML
如果是Markdow转Word, 则使用命令:
pandoc -f markdown -t html ./你的Md文件名.md | pandoc -f html -t docx -o 你的Word文件名.docx
四、选用的CSS文件
以下内容来自百度搜索
使用Pandoc命令将Markdown格式文件转换成HTML格式文件,目标HTML文件如果使用默认的CSS文件,那么展现效果非常丑陋,因而需要使用独立的CSS文件。
网上找到的的CSS文件内容如下,来自于链接:
/*
* I add this to html files generated with pandoc.
*/
html {
font-size: 100%;
overflow-y: scroll;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
body {
color: #444;
font-family: Georgia, Palatino, ‘Palatino Linotype‘, Times, ‘Times New Roman‘, serif;
font-size: 12px;
line-height: 1.7;
padding: 1em;
margin: auto;
max-width: 42em;
background: #fefefe;
}
a {
color: #0645ad;
text-decoration: none;
}
a:visited {
color: #0b0080;
}
a:hover {
color: #06e;
}
a:active {
color: #faa700;
}
a:focus {
outline: thin dotted;
}
*::-moz-selection {
background: rgba(255, 255, 0, 0.3);
color: #000;
}
*::selection {
background: rgba(255, 255, 0, 0.3);
color: #000;
}
a::-moz-selection {
background: rgba(255, 255, 0, 0.3);
color: #0645ad;
}
a::selection {
background: rgba(255, 255, 0, 0.3);
color: #0645ad;
}
p {
margin: 1em 0;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
color: #111;
line-height: 125%;
margin-top: 2em;
font-weight: normal;
}
h4, h5, h6 {
font-weight: bold;
}
h1 {
font-size: 2.5em;
}
h2 {
font-size: 2em;
}
h3 {
font-size: 1.5em;
}
h4 {
font-size: 1.2em;
}
h5 {
font-size: 1em;
}
h6 {
font-size: 0.9em;
}
blockquote {
color: #666666;
margin: 0;
padding-left: 3em;
border-left: 0.5em #EEE solid;
}
hr {
display: block;
height: 2px;
border: 0;
border-top: 1px solid #aaa;
border-bottom: 1px solid #eee;
margin: 1em 0;
padding: 0;
}
pre, code, kbd, samp {
color: #000;
font-family: monospace, monospace;
_font-family: ‘courier new‘, monospace;
font-size: 0.98em;
}
pre {
white-space: pre;
white-space: pre-wrap;
word-wrap: break-word;
}
b, strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
ins {
background: #ff9;
color: #000;
text-decoration: none;
}
mark {
background: #ff0;
color: #000;
font-style: italic;
font-weight: bold;
}
sub, sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
ul, ol {
margin: 1em 0;
padding: 0 0 0 2em;
}
li p:last-child {
margin-bottom: 0;
}
ul ul, ol ol {
margin: .3em 0;
}
dl {
margin-bottom: 1em;
}
dt {
font-weight: bold;
margin-bottom: .8em;
}
dd {
margin: 0 0 .8em 2em;
}
dd:last-child {
margin-bottom: 0;
}
img {
border: 0;
-ms-interpolation-mode: bicubic;
vertical-align: middle;
}
figure {
display: block;
text-align: center;
margin: 1em 0;
}
figure img {
border: none;
margin: 0 auto;
}
figcaption {
font-size: 0.8em;
font-style: italic;
margin: 0 0 .8em;
}
table {
margin-bottom: 2em;
border-bottom: 1px solid #ddd;
border-right: 1px solid #ddd;
border-spacing: 0;
border-collapse: collapse;
}
table th {
padding: .2em 1em;
background-color: #eee;
border-top: 1px solid #ddd;
border-left: 1px solid #ddd;
}
table td {
padding: .2em 1em;
border-top: 1px solid #ddd;
border-left: 1px solid #ddd;
vertical-align: top;
}
.author {
font-size: 1.2em;
text-align: center;
}
@media only screen and (min-width: 480px) {
body {
font-size: 14px;
}
}
@media only screen and (min-width: 768px) {
body {
font-size: 16px;
}
}
@media print {
* {
background: transparent !important;
color: black !important;
filter: none !important;
-ms-filter: none !important;
}
body {
font-size: 12pt;
max-width: 100%;
}
a, a:visited {
text-decoration: underline;
}
hr {
height: 1px;
border: 0;
border-bottom: 1px solid black;
}
a[href]:after {
content: " (" attr(href) ")";
}
abbr[title]:after {
content: " (" attr(title) ")";
}
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after {
content: "";
}
pre, blockquote {
border: 1px solid #999;
padding-right: 1em;
page-break-inside: avoid;
}
tr, img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
@page :left {
margin: 15mm 20mm 15mm 10mm;
}
@page :right {
margin: 15mm 10mm 15mm 20mm;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3 {
page-break-after: avoid;
}
}
参考文献:
[1]https://gist.github.com/killercup/5917178
[2]https://gist.github.com/ryangray/1882525
[3]https://zh.wikipedia.org/wiki/Pandoc
希望对您有所帮助!