如何将 Github 风味的 Markdown 转换为 PDF

dil*_*lmo 204 pdf markdown

我最近开始学习 Markdown 以用于文档,并且需要打印出我的一些 Markdown 页面。我想使用命令行、终端等实用程序,允许我将 Github 风格的 Markdown 转换为 PDF。它需要有适当的语法突出显示,并且不应该看起来很糟糕。谢谢你的帮助。

小智 194

我已经成功地使用手柄在 Chrome 中显示降价,然后在打印对话框中使用 Chrome 的“另存为 PDF”选项。

pip install grip  
grip your_markdown.md
Run Code Online (Sandbox Code Playgroud)

grip将在localhost:5000或类似(例如:转到 http://localhost:5000/)上呈现降价- 只需编辑并刷新浏览器。准备好后打印。

这提供了pandoc比安装乳胶更可靠的表示并且比安装乳胶更轻(pandoc 需要生成 pdf)。

在这个答案中打印不是命令行,但仍然发现这更容易/更可靠(看起来 100% 像 Github 的长文档,包括相对链接的图像和代码突出显示)。

  • `grip your_markdown.md --export your_markdown.html` 在这里是很有用的选项。将它导出到 html 文件,然后可以使用 wkhtmltopdf 之类的东西从命令行打印。 (28认同)
  • 或者,您可以下载(免费!)Atom (https://atom.io/),在 Atom 中打开您的文件,使用 control + shift+ M 在预览中查看,另存为 html,然后在 Chrome 浏览器中打开 html 并另存为pdf。 (9认同)
  • 这确实带有类似 Github 的框架。有没有办法打印到 PDF,删除边框/标题栏(即打印框架内的所有内容)? (6认同)
  • 您可以将 Pandoc 与轻量级 [wkhtmltopdf](https://wkhtmltopdf.org/downloads.html) 一起使用,而不是像这样的乳胶:`pandoc README-Template.md --from=gfm --pdf-engine=wkhtmltopdf --output README.pdf` (4认同)
  • 这很容易。 (3认同)

Qua*_*ong 70

您还可以使用基于 Node.js 的markdown-pdf

npm install -g markdown-pdf
markdown-pdf /path/to/markdown
Run Code Online (Sandbox Code Playgroud)

  • 这也可以与“npx”一起使用来代替“npm”,以避免必须全局安装以一次性使用:“npx markdown-pdf /path/to/markdown” (5认同)
  • 这非常棒而且非常简单。链接问题来自 html5 样板的打印 css,您可以在自己的样式表中注释或覆盖它。 (2认同)
  • 我想补充一点,它具有开箱即用的 Unicode 支持,这非常好。 (2认同)

Mag*_*nus 52

看看pandoc。它确实有语法高亮。它可能需要您对文档进行(小幅)更改,因为它有自己的 Markdown 风格,我不知道它与 GitHub 风格的匹配程度如何。

  • 如果有人只是在寻找命令:`sudo apt install pandoc texlive-latex-recommended texlive-xetex texlive-luatex pandoc-citeproc etoolbox wkhtmltopdf`(在 Ubuntu 上,可能不是所有必需的),然后是 `pandoc --variable urlcolor=cyan myfile.md -o myfile.pdf` (8认同)
  • 谢谢。运行 `pandoc -h` 确实返回了对 GitHub Flavored Markdown 的支持,所以我将此问题标记为已解决。 (4认同)
  • 我试图在 Fedora Linux 上安装 `pandoc`,但遇到了依赖噩梦——主要是与 LaTex 相关。我的建议是跳过 pandoc 并先尝试其他选项 (3认同)

小智 13

如果Markdown文件托管在 github 存储库上,则gitprint是创建 pdf/print 的一个有趣选项。

您需要做的就是在 URL 中替换github.comgitprint.com。这是gitprint 主页上的一个例子

不幸的是,它不适用于 markdown gists,并且仅适用于存储库中的 markdown 文件。

  • 它也不适用于图像。:( (5认同)
  • ...aaa这是一个在线赌场。 (2认同)

小智 11

http://www.markdowntopdf.com 上有一个在线转换器
它提供了开箱即用的语法高亮显示,是我迄今为止见过的最简单的解决方案。它还可以正确处理特定于 GFM 的其他功能,例如表格。

  • 不处理单独文件中的图像。 (7认同)

And*_*ovs 10

对于那些使用 Linux 的人,请使用pandoc

安装:

sudo apt install pandoc texlive-latex-extra
Run Code Online (Sandbox Code Playgroud)

是的,-extra由于字体,您需要包。

转变:

pandoc --from markdown -o output.pdf my-file.md
Run Code Online (Sandbox Code Playgroud)

  • 没有包含任何图像、链接和忽略的东西,比如 `<font color="red">` (3认同)

Dan*_*ore 6

正如我在评论中所说,Github 使用Linguist来提供语法高亮。在 Github 上,您可以使用它来指定语法高亮,如下所示:

```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有好的方法可以将 Markdown 直接转换为带有语法突出显示的 PDF 文件。

备择方案:

维姆

如果您有 vim,您可以通过从终端运行以下命令轻松实现语法高亮:

vim -c hardcopy -c quit /path/to/file.ps
Run Code Online (Sandbox Code Playgroud)

或者在 vim 里面:

:hardcopy >/path/to/file.ps
Run Code Online (Sandbox Code Playgroud)

这将生成一个 PostScript 文件,可以使用例如 ps2pdf 将其转换为 pdf:

ps2pdf /path/to/file.ps
Run Code Online (Sandbox Code Playgroud)

来源突出

如果你想走 HTML 或 LaTeX 的路线,你可以试试Source-highlight。可以在此处找到 Source-highlight 支持的所有语言的列表。

一些示例 Source-highlight 命令包括:

source-highlight -s java -f html -i Hello.java -o Hello1.html
source-highlight -s java -f html --input Hello.java --output Hello2.html --doc
source-highlight -s java -f html -i Hello.java -o Hello3.html --title "Happy Java with java2html :-)" --tab 3
Run Code Online (Sandbox Code Playgroud)

使用这个输入文件

每个输出各自的 HTML 文件:

Hello1.html
Hello2.html
Hello3.html

可以在此处找到 Source-highlight 用法的更多示例

窗户

Vimps2pdf(由Ghostscript提供)和Source-highlight都可以通过Cygwin 获得


小智 5

我最幸运的是 VSCode 和Markdown PDF扩展。在线转换器搞砸了我的文件的编码或在标题中插入了水印。

用法:

  1. 安装扩展
  2. 使用 VSCode 打开 MD 文件,确保启用 Markdown 突出显示
  3. 打开命令面板 (F1),键入export并选择markdown-pdf: Export (pdf)

注意:该扩展在后台安装并使用本地版本的 Chromium。

有几个选项可以控制格式,它们都在上面链接的网站上进行了解释