在命令行中将 markdown 转换为 pdf

在命令行中将 markdown 转换为 pdf

在命令行中将 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,通常的做法是先走中间格式。该格式的选择决定了您的选择。

  1. 格罗夫:GNU troff 是 troff 文本格式化程序的实现。它是诸如 之类的工具的基础man,速度非常快,并且还可以生成漂亮的 PDF 输出。您将需要groffghostscript软件包,然后使用 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.
    
  2. 超文本标记语言:有多个 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.
    
  3. 乳胶使用 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 下载大小)。

  4. 自由办公室:此方法仅在您已经安装了 LibreOffice 时才有意义,因为它是一个非常大的依赖项。在这种情况下,可以使用 pandoc 转换为odtdocx,然后可以使用以下命令将其转换为 PDF

     lowriter --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。

相关内容