如果在某处记录了以编程方式实现此目的的简单方法(不是通过在浏览器字段中复制/粘贴并单击按钮进行转换),我深表歉意。在我的搜索和阅读中我找不到它。
我想以编程方式将 Markdown 和 CSS 文件转换为听起来可能被称为“内联”CSS 的文件。例如:
这个 Markdown 文件 (
file.md
)
# Install
Install instructions
## Update
Update instructions
这个 CSS 文件 (
style.css
)
h1 {
font-size: 100px;
}
h2 {
color: red;
}
变成这样了(
file.html
)
<h1 style="font-size: 100px;"><a id="install"></a>Install</h1>
<p>Install instructions</p>
<h2 style="color: red;"><a id="update"><a>Update</h2>
<p>Update instructions</p>
我正在使用 Pandoc
将 Markdown 转换为 HTMLpandoc -f markdown -t html file.md -o file.html
当我使用时
pandoc -f markdown -t html file.md -o file.html --css=style.css --self-contained
(或
--standalone
)
它回来了
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang xml:lang>
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>file</title>
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
</style>
<style type="text/css">h1 {font-size: 100px;}h2 {color: red;}</style>
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
</head>
<body>
<h1><a id="install"></a>Install</h1>
<p>Install instructions</p>
<h2><a id="update"><a>Update</h2>
<p>Update instructions</p>
</body>
</html>
如上所述,这不是我的目标。我希望 CSS 严格“内联”:
<h1 style="font-size: 100px;"><a id="install"></a>Install</h1>
有人知道已经编写了可以通过编程实现此目的的工具或脚本吗?我已经搜索过了,却一无所获。理想情况下我可以使用 Pandoc 来实现此目的,但我找不到方法。
我不关心 HTML 的
<head>
和 <style>
块是否存在。该 HTML 将通过 cURL 发送到内容管理系统,该系统会删除除 <body>
内的内容和任何“内联”CSS 之外的所有 HTML 元素。
感谢您的任何想法或为我指明方向。
编辑 2023/03/24:
--self-contained
标志现已弃用 - pandoc 会自动将其转换为 --embed-resources --standalone
,应改为使用。
简而言之:
-s
/--standalone
“默认情况下,pandoc 会生成文档片段”。要生成独立文档(有效的 HTML 文件,包括 和 ),请使用这些标志之一。
--embed-resource
“生成一个没有外部依赖项的独立 HTML 文件...”
对于大多数人来说,比
-H
更好的选择是使用 --self-contained
选项:
使用以下命令生成没有外部依赖项的独立 HTML 文件 data:包含链接脚本、样式表内容的 URI 图片和视频。
然后你可以这样做:
pandoc -f markdown -t html file.md -o file.html --self-contained --css=github-pandoc.css
这样,您就不需要创建带有样式标签的特殊
.css
文件。请注意,不再需要 -s
,因为 --self-contained
意味着 -s
(尽管它不会造成伤害)。
请注意,这将尝试包含显示页面所需的任何其他资源(如有必要,请从网上下载它们!) - 有关详细信息,请查看
--self-contained
的 pandoc 文档。
我这样做的方法是利用
-H
选项在 html 标头中包含一个文件。这意味着你需要用 <style> </style>
标签包装你的 css 文件(所以从严格意义上来说它不再是真正的 css 文件)。输出是这样创建的:
pandoc -f markdown -t html file.md -o file.html -H style.css -s
自从发布这个问题以来我碰巧遇到的另一个解决方案是 Juice npm 包,它也提供了 CLI。
它提供了使用样式表和如下脚本将 CSS 内联放置的能力:
juice --css style.css original.html final.html