在命令行中将 markdown 转换为 pdf

Mar*_*ter 13 command-line pdf markdown pandoc

在命令行中将 markdown 转换为 pdf 最简单的工具是什么?

我找到了人们建议使用的howtos pandoc,但所需的包需要千兆字节的依赖项:

apt-get install pandoc texlive-latex-base texlive-fonts-recommended texlive-extra-utils texlive-latex-extra
Run Code Online (Sandbox Code Playgroud)

是否有一些最小的工具可以在命令行中将简单的 markdown 转换为 pdf,并且不需要大量的依赖项?

我使用的是 Debian 10。

tar*_*leb 8

这里介绍的所有方法仍然以某种方式使用 pandoc,因为问题中提到的千兆字节下载来自texlive-*给定apt-get命令 \xe2\x80\x93 中的 LaTeX ( ) 包,这些都不是必需的。该pandoc软件包本身的下载大小约为 17MB,这对于您的用例来说可能可以接受,也可能不可接受。

\n

如果您真的非常不想使用 pandoc,那么您可以使用lunamark代替。它与 pandoc 类似(两个工具共享同一作者),但 lunamark 是用 Lua 编写的,Lua 是一种非常小而精简的语言,占用空间很小。但没有可用的 Debian 软件包,您必须自己构建它。但是,如前所述,主要问题是 PDF 创建:所有好的 PDF 库都必须进行字体处理,这通常需要大量库可用。

\n

我不知道有什么工具可以直接从 Markdown 转换为 PDF,通常的方法是先使用中间格式。该格式的选择决定了您的选择。

\n
    \n
  1. groff:GNU troff 是 troff 文本格式化程序的实现。它是诸如 之类的工具的基础man,速度非常快,并且还可以生成漂亮的 PDF 输出。您将需要groffghostscript软件包,然后使用以下命令调用 pandoc

    \n
    pandoc --pdf-engine=pdfroff --output=out.pdf ...\n
    Run Code Online (Sandbox Code Playgroud)\n

    这可能是需要最少且最小的附加包的解决方案。确保apt-get不会安装任何不必要的软件包:

    \n
    apt-get install pandoc groff ghostscript --no-install-recommends\n
    Run Code Online (Sandbox Code Playgroud)\n

    在新设置的系统上,这为您提供了

    \n
    Need to get 38.3 MB of archives.\nAfter this operation, 194 MB of additional disk space will be used.\n
    Run Code Online (Sandbox Code Playgroud)\n
  2. \n
  3. HTML:有多个 HTML 到 PDF 转换器,pandoc 可以使用其中两个(当前版本为三个)引擎来处理从 Markdown 到 PDF 的转换。您可以选择weasyprint用 Python 编写的 和wkhtmltopdf构建在 Chromium 中使用的 webkit HTML 引擎之上的 。安装其中任何一个,然后使用

    \n
     pandoc --pdf-engine=weasyprint\n
    Run Code Online (Sandbox Code Playgroud)\n

    或者

    \n
     pandoc --pdf-engine=wkhtmltopdf\n
    Run Code Online (Sandbox Code Playgroud)\n

    wkhtmltopdf如果您已经安装了许多图形和字体包,那么这尤其可能是一个不错的选择。例如,在安装了 LXDE 桌面环境的系统上,您会看到:

    \n
    % apt-get install pandoc wkhtmltopdf --no-install-recommends\n... [omitted] ...\nNeed to get 16.4 MB of archives.\nAfter this operation, 122 MB of additional disk space will be used.\n
    Run Code Online (Sandbox Code Playgroud)\n

    然而,对于一个全新的系统来说,影响会更大:

    \n
    Need to get 91.1 MB of archives.\nAfter this operation, 530 MB of additional disk space will be used.\n
    Run Code Online (Sandbox Code Playgroud)\n
  4. \n
  5. LaTeX with Docker:这种方法实际上是再次使用 LaTeX,但我们没有将其安装在我们的系统上,而是使用包含 pandoc 的 Docker 映像,并且仅包含最少的 LaTeX 包,使其相对较小。您将需要该docker.io包,然后运行这个冗长的命令:

    \n
    pandoc --pdf-engine=pdfroff --output=out.pdf ...\n
    Run Code Online (Sandbox Code Playgroud)\n

    这样做的优点是您将使用最新的 pandoc 和 LaTeX 版本,并且它提供了最好看的 PDF(恕我直言)。然而,Docker 镜像的大小仍然约为 200MB,而且 Docker 本身也很大(>90MB 下载大小)。

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

    \n
     lowriter --headless --convert-to pdf intermediary.odt\n
    Run Code Online (Sandbox Code Playgroud)\n
  8. \n
\n

我希望其中之一能满足您的需求。

\n

  • @Kusalananda 我的理解是许多大型 `texlive-*` 包是一个问题。“pandoc”包的下载大小仅为“17MB”。 (2认同)