我最近开始学习Markdown以便与文档一起使用,并且需要打印一些Markdown页面。我想使用命令行,终端等实用程序,使我可以将Github风格的Markdown转换为PDF。它需要突出显示正确的语法,并且看起来不应该太恐怖。感谢您的帮助。

评论

GitHub上的语法着色不是GitHub Flavored Markdown的一部分。至少据我所知。

@OliverSalzburg Github使用Linguist来突出显示语法。

@dillmo,先转换为HTML,然后使用Chrome浏览器将其打印为pdf。

#1 楼

我已经成功使用握把在Chrome中显示降价,然后在“打印”对话框中使用Chrome的“另存为PDF”选项。
pip install grip  
grip your_markdown.md

grip会在localhost:5000或类似位置(例如:转到http:// localhost:5000 /)-只需编辑一下并刷新浏​​览器即可。准备就绪后可以打印。
pandoc更可靠的表示形式,并且比安装乳胶更轻(pandoc要求生成pdf)。
此答案中的打印不是命令行,但仍然可以找到这样更容易/更可靠(对于一个较长的文档,包括相对链接的图像和代码突出显示,看起来就像Github一样100%)。

评论


这很容易。

– s2t2
2015年9月5日下午0:21

请在此处抓紧your_markdown.md --export your_markdown.html是有用的选项。将其导出到html文件,然后可以使用wkhtmltopdf之类的命令从命令行中进行打印。

–卢克·埃克斯顿(Luke Exton)
2015年9月12日,下午1:27

或者,您可以下载(免费!)Atom(atom.io),在Atom中打开文件,使用Control + shift + M在预览中查看文件,另存为html,然后在Chrome浏览器中打开html并另存为pdf。

–安德鲁·卡特(Andrew Carter)
16年1月4日在19:54

确实带有类似Github的框架。有没有一种方法可以打印为PDF,去掉边框/标题栏(即打印框架中的所有内容)?

– Joost
16 Mar 7 '16 at 14:05

您可以将Pandoc与重量轻的wkhtmltopdf一起使用,而不是像乳胶那样使用:pandoc README-Template.md --from = gfm --pdf-engine = wkhtmltopdf --output README.pdf

– Asme Just
18年4月13日在19:15

#2 楼

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

npm install -g markdown-pdf
markdown-pdf /path/to/markdown


评论


这非常棒而且非常容易。链接问题来自html5样板的打印CSS,您可以将其注释掉或在自己的样式表中覆盖。

– Robert Went
2015年11月8日,凌晨3:14

要补充一点,它具有现成的Unicode支持,这非常好。

–尼克
17年3月13日19:00

如果要使用GitHub的CSS文件,也可以安装github-markdown-css。

– jpmc26
17年6月9日在23:07

@ jpmc26如何使用它,我不了解javascript或npm?

– Abhishek Bhatia
17年8月16日在18:16

@AbhishekBhatia这是我在Google上搜索“ npm简介”时的第一个结果:smalljs.org/package-managers/npm。安装后,它只是埋在node_modules中的文件。

– jpmc26
17年8月16日在18:51

#3 楼

看看pandoc。它确实具有语法突出显示。它可能需要您对文档进行(较小的)更改,因为它具有自己的markdown风格,而且我不知道它与GitHub风格的匹配程度如何。

评论


谢谢。运行pandoc -h确实返回了对GitHub Flavored Markdown的支持,所以我将此问题标记为已解决。

–迪尔莫
2014年2月11日,23:49

我试图在Fedora Linux上安装pandoc并遇到了依赖梦night-主要与LaTex有关。我的建议是先跳过pandoc,然后先尝试其他选项

– IanB
15年8月13日在1:13



对于那些使用非ASCII字母并使其丢失的用户:向pandoc添加字体选项,如下所示:--variable mainfont =“ Liberation Serif” --variable sansfont =“ Liberation Sans”

– gluk47
16-09-13在20:18

如果有人只是在寻找命令: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

– Tor Klingberg
17-6-5在15:31



这是唯一可以完整使用锚点和其他附加功能的东西:pandoc -f markdown -t html5 on-premise-admin-guide.md -o test.pdf通过自制程序安装并安装了wkhtml2pdf后可以正常工作。

–詹姆斯·坎贝尔
19-10-30在3:10

#4 楼

如果markdown文件托管在github仓库中,则gitprint是创建pdf /打印的有趣选择。

您需要做的就是用URL中的github.com替换gitprint.com。这是gitprint主页上的示例。

不幸的是,它不适用于markdown要点,仅适用于存储库中的markdown文件。

评论


它也不适用于图像。 :(

–亚当·阿罗德(Adam Arold)
2014年9月2日下午13:12

...并且格式不正确:(

– Moebius
16年4月22日在19:20

有趣的选择。优点:可以维护外部链接,并可以从输出中访问它们。缺点:输出是黑白的,锚链接被删除,外部链接因为是黑白而没有在视觉上显示。

–罗迪
18年10月10日在14:49

#5 楼

http://www.markdowntopdf.com
上有一个在线转换器,它提供了现成的语法高亮显示,这是我到目前为止所见过的最简单的解决方案。它还可以正确处理GFM特有的其他功能,例如表。

评论


不处理单独文件中的图像。

–拉里K
17-10-16在19:11

做工精美

– shadi
17-10-20在15:22

#6 楼

对于使用Linux的用户,请使用pandoc。

安装:

sudo apt install pandoc texlive-latex-extra


是的,由于字体,您需要-extra软件包。
< br转换:

pandoc --from markdown -o output.pdf my-file.md


评论


虽然没有包含任何图像,链接和诸如之类的被忽略的东西

– derHugo
19年1月11日在13:08



#7 楼

正如我在评论中所述,Github使用Linguist来突出显示语法。在Github上,您可以像这样使用它来指定语法高亮显示:
```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```

不幸的是,没有很好的方法将Markdown直接转换为具有语法高亮显示的PDF文件。
替代方法:
Vim:
如果您有vim,则可以通过在终端上运行以下命令轻松实现语法高亮显示:
vim -c hardcopy -c quit /path/to/file.ps

或在vim内部:
:hardcopy >/path/to/file.ps

此将会产生一个PostScript文件,该文件可以使用ps2pdf转换为pdf:
ps2pdf /path/to/file.ps

Source-highlight:
如果您想改用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

使用此输入文件
每个输出自己的相应的HTML文件:
Hello1.htmlHello2.htmlHello3.html
可以在此处找到更多有关Source-highlight用法的示例
Windows:
Vim,ps2pdf(由Ghostscript提供)和Source -highlight都可以通过Cygwin获得。

#8 楼

我最近创建了一项服务,可将降价文件转换为PDF。它支持Github风格的markdown以及语法突出显示。该服务位于:http://markdown2pdf.com

评论


不适用于zip文件:存在压缩文件时,无法在存档中找到降价文件。

– Moebius
16年4月22日在19:26

收到“转换为pdf时出错”。改用kevgathuku的markdowntopdf.com

– shadi
17-10-20在15:22



#9 楼

矿山解决方案:将带有pandoc的markdown转换为html(不要忘了使用css来显示pandoc的表格边框),然后使用libreoffice打开它,选择一个选项export as pdf

NB:这里都没有提到并在Internet上为我工作的解决方案:1)基于浏览器的解决方案(例如,抓地力)正在添加多余的信息,例如页面编号,而我没有设法将其删除; 2)pandoc转换为pdf的过程中断了,对我来说,它生成了一个空表(可能是因为Unicode,是的,我将其配置为使用xetex),3)基于站点的解决方案(即gitprint.com)也添加了多余的内容,例如类似github的边距,而我只需要一个简单的表我用awk生成了!

评论


pandoc应该为您工作,例如--variable mainfont =“ Liberation Serif” --variable sansfont =“ Liberation Sans”

– gluk47
16年9月13日在20:17

@ gluk47很酷,可以!

– Hi-Angel
16-09-19在14:10

我可以推荐此页面将markdown转换为PDF(或用于打印)markdownprint.com。

–约翰·奥(Johan O)
18年4月21日在13:56

@JohanO markdownprint.com似乎已关闭

– derHugo
19年1月11日在13:10



#10 楼

我尝试了几种chrome插件和在线转换器。MDtr2PDF是最好的。它支持Github-flavored-markdown和unicode。

评论


它是否支持存储在其他文件中的图像?

–拉里K
17-10-16在19:12

似乎不再起作用,并且不受TLS保护。

–大卫·奥利弗(David Oliver)
19年5月16日在14:47

该链接已死

–亚当·拉塞克(Adam Lassek)
20年1月30日在17:24

#11 楼

我根据个人需要优化了此代码段:

# sudo apt install grip wkhtmltopdf

MD=${1:-README.md}
PDF=${2:-"$MD".pdf}
PORT=8971
DELAY=10

printf "Converting $MD to $PDF on port $PORT\n"
printf "Waiting $DELAY seconds for server to start...\n"

grip "$MD" localhost:$PORT &
sleep $DELAY
wkhtmltopdf http://localhost:$PORT "$PDF"
kill $(ps -eo pid,command | grep grip | grep -v grep | awk '{print }')


之后另存为/usr/local/bin/md2pdfsudo chmod +x /usr/local/bin/md2pdf

用法:


md2pdf将README.md转换为README.md.pdf
md2pdf foo.md将foo.md转换为foo.md.pdf
md2pdf foo.md bar.pdf将foo.md转换为bar.pdf


#12 楼

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

用法:


安装扩展名
打开您的MD文件使用VSCode,确保启用了Markdown高亮显示功能。
打开命令面板(F1),键入export并选择markdown-pdf: Export (pdf)


NB:该扩展程序安装并使用本地版本的Chromium在后台。

有几种控制格式的选项,所有这些都在上面链接的网站上进行了说明

#13 楼

我只是从HTML转换而来。这可以满足我的需求:

https://github.com/dompdf/dompdf

我发现,一般而言,Markdown并不是转换为PDF的好格式,因为它
没有本机CSS支持。这是我使用的脚本:

 <?php
require 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;

$dompdf = new Dompdf();
$dompdf->getOptions()->setIsFontSubsettingEnabled(true);
$s_in = file_get_contents('index.html');
$dompdf->loadHtml($s_in);

$dompdf->render();
$s_out = $dompdf->output();
file_put_contents('index.pdf', $s_out);
 


此解决方案只需要PHP(25 MB)和DomPdf(4 MB),因此与其他选项相比非常轻巧。

#14 楼

我仍在寻找能够产生高质量结果的命令行解决方案[更新:我想出了一个pandoc命令,该命令使用CSS进行格式化,并且看起来非常不错:pandoc -f gfm -t html5 --metadata pagetitle="test.md" --css github.css test.md -o test.pdf-现在在这里查看我的其他答案!] ,但是:
Chrome中的Markdown Viewer插件工作得很好,并且看起来与GitHub markdown惊人地相似!只需在安装并激活此插件的Chrome中打开markdown文件,然后使用菜单直接从Chrome中打印并另存为PDF。
Markdown Viewer具有以下功能(添加了重点):

✔呈现本地和远程URL
✔对远程源的细粒度访问
✔多个降价解析器
✔完全控制编译器选项
✔主题(包括GitHub主题)
✔GitHub标记的Markdown(GFM)
✔在文件更改时自动重新加载
✔语法突出显示的代码块
✔目录(TOC)
✔MathJax和Emoji支持
/>✔记住滚动位置
✔标记内容类型检测
✔使用RegExp进行URL检测
✔切换内容安全策略(CSP)
✔覆盖页面编码
✔设置同步
✔原始和渲染的降价视图
✔免费和开源

示例降价文件
这里是示例降价文件,这是我的示例代码段我的markdown演示文件项目在这里:
test.md:
 ## 1.1. Align images left, right, or centered, with NO WORD WRAP:

This:

```html
**Align left:**
<p align="left" width="100%">
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>

**Align center:**
<p align="center" width="100%">
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>

**Align right:**
<p align="right" width="100%">
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>
```

Produces this:

**Align left:**
<p align="left" width="100%">
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>

**Align center:**
<p align="center" width="100%">
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>

**Align right:**
<p align="right" width="100%">
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>

If you'd like to set the text itself to left, center, or right, you can include the text inside the `<p>` element as well, as regular HTML, like this:

```html
<p align="right" width="100%">
    This text is also aligned to the right.<br>
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>
```
 

Markdown Viewer输出:
上面的markdown文件产生在安装了Markdown Viewer插件后,直接在我的Chrome浏览器中显示此输出。请注意,它具有针对代码块的语言感知语法突出显示,漂亮的灰色代码背景以及用于输出内容的合理列宽。
其输出看起来确实不错,并且几乎与GitHub的markdown输出相同!

它也支持主题。例如,请参见此处选择的“ GitHub”主题。只需单击Chrome浏览器右上角的小m插件图标,即可选择所需的Markdown Viewer设置:



grip输出:
将此与抓地力的输出,我认为效果不佳。 grip没有针对代码块的语法突出显示,针对代码的灰色背景,也不具有用于输出内容的合理的列宽。在宽显示器上,它占据了整个宽度。
在Linux Ubuntu上:
sudo apt update
sudo apt install grip
grip test.md

然后Ctrl +单击它提供的URL,以在浏览器中打开输出。例如:http:// localhost:6419 /。这是我在Chrome中看到的grip渲染的输出:

另请参见:

[我的回答]如何转换Markdown + CSS-> PDF?