在命令行中将 markdown 转换为 pdf 最简单的工具是什么?
我找到了人们建议使用的howtos pandoc
,但所需的包需要千兆字节的依赖项:
apt-get install pandoc texlive-latex-base texlive-fonts-recommended texlive-extra-utils texlive-latex-extra
是否有一些最小的工具可以在命令行中将简单的 markdown 转换为 pdf,并且不需要大量的依赖项?
我使用的是 Debian 10。
答案1
这里介绍的所有方法仍然以某种方式使用 pandoc,因为问题中提到的千兆字节下载来自给texlive-*
定apt-get
命令中的 LaTeX ( ) 包 - 这些都不是必需的。该pandoc
软件包本身的下载大小约为 17MB,这对于您的用例来说可能可以接受,也可能不可接受。
如果你真的,真的不想使用 pandoc,那么你可以使用露纳马克在它的位置。它与 pandoc 类似(两个工具共享同一作者),但 lunamark 是用 Lua 编写的,Lua 是一种非常小而精简的语言,占用空间很小。但没有可用的 Debian 软件包,您必须自己构建它。但是,如前所述,主要问题是 PDF 创建:所有好的 PDF 库都必须进行字体处理,这通常需要大量库可用。
我不知道有什么工具可以用直接地从Markdown到PDF,通常的做法是先走中间格式。该格式的选择决定了您的选择。
格罗夫:GNU troff 是 troff 文本格式化程序的实现。它是诸如 之类的工具的基础
man
,速度非常快,并且还可以生成漂亮的 PDF 输出。您将需要groff
和ghostscript
软件包,然后使用 pandoc 调用pandoc --pdf-engine=pdfroff --output=out.pdf ...
这可能是需要最少且最小的附加包的解决方案。确保
apt-get
不会安装任何不必要的软件包:apt-get install pandoc groff ghostscript --no-install-recommends
在新设置的系统上,这为您提供了
Need to get 38.3 MB of archives. After this operation, 194 MB of additional disk space will be used.
超文本标记语言:有多个 HTML 到 PDF 转换器,pandoc 可以使用其中两个(当前版本为三个)引擎来处理从 Markdown 到 PDF 的转换。您可以选择
weasyprint
用 Python 编写的 和wkhtmltopdf
构建在 Chromium 中使用的 webkit HTML 引擎之上的 。安装其中任何一个,然后使用pandoc --pdf-engine=weasyprint
或者
pandoc --pdf-engine=wkhtmltopdf
wkhtmltopdf
如果您已经安装了许多图形和字体包,那么这尤其可能是一个不错的选择。例如,在安装了 LXDE 桌面环境的系统上,您会看到:% apt-get install pandoc wkhtmltopdf --no-install-recommends ... [omitted] ... Need to get 16.4 MB of archives. After this operation, 122 MB of additional disk space will be used.
然而,对于一个全新的系统来说,影响会更大:
Need to get 91.1 MB of archives. After this operation, 530 MB of additional disk space will be used.
乳胶使用 Docker:这种方法实际上是再次使用 LaTeX,但我们没有将其安装在我们的系统上,而是使用包含 pandoc 的 Docker 映像,并且仅包含最少的 LaTeX 包,使其相对较小。您将需要该
docker.io
包,然后运行这个冗长的命令:docker run --rm -v "$(pwd)":/data -u $(id -u):$(id -g) pandoc/latex --output=out.pdf ...
这样做的优点是您将使用最新的 pandoc 和 LaTeX 版本,并且它提供了最好看的 PDF(恕我直言)。然而,Docker 镜像的大小仍然约为 200MB,而且 Docker 本身也很大(>90MB 下载大小)。
自由办公室:此方法仅在您已经安装了 LibreOffice 时才有意义,因为它是一个非常大的依赖项。在这种情况下,可以使用 pandoc 转换为
odt
或docx
,然后可以使用以下命令将其转换为 PDFlowriter --headless --convert-to pdf intermediary.odt
我希望其中之一能满足您的需求。
答案2
使用 Markdown -> HTML -> PDF 路线,HTML 到 PDF由 @tarleb 回答或HTML 到 PDF回答者:@MC68020
折扣
这(Debian 包)是用 C 语言编写的,我认为它是我见过的选项中依赖性最小的。
- 对于名为“filename.md”的文件
markdown filename.md
输出 HTML(或makepage filename.md
完全形成的 XHTML)到stdout
- 如果需要,可以使用或将其
stdout
转移到文件>
>>
- 我从 Okular 获得了这个,如果您可以选择 GUI 和 Qt 依赖项,您可以轻松使用它,但如果您还没有它们,则可以轻松达到约 200MB。
注意:您也许可以进一步了解如何创建与 Okular 用于导出的 PDF 相同的 PDF。