如何从GitHub打印文件

125
如果我想要以屏幕上的样子打印GitHub上的Markdown文件,例如:https://github.com/RestKit/RestKit/blob/master/Docs/Object%20Mapping.md,那么我该怎么做呢?我需要更改在保存的GitHub HTML页面中的哪些代码,以便打印出来的文件保持Markdown的外观和感觉?
到目前为止,我唯一知道的线索是这个:https://makandracards.com/makandra/4947-how-to-print-github-wiki-pages,但它更像是一个实用(非编程)解决方法,而且并不起作用,因为使用的Markdown解释器没有GitHub网站上运行的那个容错率高。
20个回答

74

这里有一个对我有效的书签小程序

  1. 复制书签小程序 Gist 的内容,如下所示。
  2. 在你的浏览器工具栏中创建一个新的书签,并给它一个合适的名称。
  3. 将那一行代码放入 URL 栏中。

如果现在你去 Github 上的 Markdown 页面并点击该书签,它会重新格式化页面并更改 CSS,使其在打印时与屏幕上的外观相同。它还会自动触发打印对话框弹出。

书签小程序内容:

javascript:document.body.appendChild(document.querySelector("#readme"));document.querySelector("header").remove();document.querySelector(".application-main").remove();document.querySelector("footer").remove();window.print();

2
我发现这个书签工具没有正确地删除已登录用户的Github标题,所以我在更新的gist上进行了更新。 - JKnight
3
自从 GitHub 新设计后,出现了故障。 - zsitro
这个文件中有未压缩的版本吗?以防我想尝试进行一些编辑?现在代码都是压缩/加密的。 - Anmol Saraf
已经为 GitHub 设定可用,链接在此:https://gist.github.com/reallistic/189c1fade597d6af8869d7d076351df2 - Realistic
1
这是一个针对2022年的代码片段:https://gist.github.com/davidcann/2d65fb189cdee31a6dcaa248f46afec3 - davidcann
显示剩余7条评论

37

以下是一个超级简单的解决方案:只需选择要打印的readme中的所有文本,然后打印并选择“仅选择的文本”即可。

这在Chrome中(包括图像)完美运行,不需要JavaScript、外部网站、下载或构建软件。

这是我测试过的: https://github.com/kroitor/gjk.c/blob/master/README.md


5
不错!Chrome的选项现在叫做“更多设置”--“仅选择部分”。它支持格式,不需要额外的软件或下载Markdown文件。 - Jerry101
1
当从 Firefox 进行打印时,选择您要打印的内容,从“文件”菜单中访问“打印”选项(或按 ctrl + p),然后选择“选择”选项。 - Noah Heck
这就是方法。从Chrome 107开始,只需选择文本,右键单击->打印... - Orangutech

18

另一个选择是pandoc。安装后(支持Windows、Linux和Mac OS),命令大致如下:pandoc file.md -f markdown --smart -s -o file.pdf

然后打印生成的PDF文件。


还有这个在线转换器,它为我产生了最好的输出结果:http://www.markdowntopdf.com/

Pandoc也有一个在线演示。

更新2020年:在macOS Catalina上,此命令适用于我:

brew install pandoc
brew install --cask basictex
pandoc README.md -f markdown+smart -s -o out.pdf --pdf-engine=/Library/TeX/texbin/pdflatex --pdf-engine=xelatex

发现这个工具非常有效 https://www.markdowntopdf.com/ - Rupesh
如何从随机的公共问题中获取原始的Markdown? 例如:https://github.com/ethereum/EIPs/issues/650 - Kirill Taran

14
如果您是Mac用户,另一个很好的选择是在Safari浏览器中使用“阅读器”功能。 只需打开markdown文件,然后单击右上角的“阅读器”按钮即可。 然后使用命令“CMD + P”打印页面。 效果很好。

这在最新的iOS/Safari上似乎不再起作用了 :( - Mauricio Morales
在macOS 10.14 Mojave上表现良好,但是在将硬拷贝打印到纸张后,我发现我的文件名奇怪地位于.md(标记)文件的第一行下方,也就是最大标题H1下面。 - om01

7
我制作了一个 Chrome 扩展程序,可以实现这一点:GitHub Markdown Printer。它是一个一键式解决方案,可完全打印 GitHub 上的 markdown 文件。

步骤:

  1. 安装 Chrome 扩展程序
  2. 进入 GitHub/GitHub Enterprise 上具有 markdown 预览的任何页面
  3. 单击 GMP 图标打开打印对话框,然后选择打印或保存为 PDF

查看repo了解更多信息。


1
该扩展程序可以读取和写入您访问的所有页面。不确定它有多安全。 - Vikram Khemlani
2
@VikramKhemlani 这是一个有效的关注点,但我向您保证我没有做任何恶意行为。读取权限是必需的,以查看1)您是否在Github上,2)是否有有效的Markdown预览。写入权限是必需的,以添加自定义样式表以在打印时删除额外的元素。该项目是开源的,您可以在此处找到源代码:https://github.com/jerry1100/github-markdown-printer/tree/master/src。如果您仍然怀疑,您可以在Chrome开发工具中打开网络选项卡,并发现我没有将任何数据发送到任何地方。 - Jerry Wu
1
@JerryWu 在浏览器管理扩展时,有一种手动设置扩展仅在gist.github.com和github.com页面上工作的方法,我很确定在您的扩展代码中也有一种设置默认值的方法。无论如何,赞扬您的扩展比标记和复制页面要好,因为它会提供更好的样式,可以将更多的文本打印在每页上。我喜欢这个扩展。唯一的问题是它为gist.github.com上的注释保留了页面,所以我不得不指定页面的起始/结束位置,以避免打印很多空白页面。 - Martin Braun
1
@MartinBraun 感谢您的反馈。当我开发这个项目时,我正在IBM工作,需要匹配github.ibm.com。由于github.*.com不是有效的匹配模式,所以我采用了当前的方法。如果您知道更少侵入性的方法,请告诉我,我会尝试一下。此外,我已经修复了有关gists评论的问题,请期待v0.6 :) - Jerry Wu
2
好消息 - 从v0.8版本开始,由于新的清单v3 API,此扩展程序不再需要任何权限或站点访问。 - Jerry Wu
使用这个扩展非常棒。 - Dmitry Lysenko

5
我发现了一个非常棒的工具,可以实现我所要求的打印结果:http://plessl.github.com/wkpdf/ 以下是它网站上的一句话:“如果您想呈现一个网站的所有图形效果,以确切地匹配浏览器中的视图,您可以显式强制使用CSS屏幕样式表,并启用如下示例中的背景图像打印...”
所以我运行了:
wkpdf --source https://github.com/RestKit/RestKit/blob/master/Docs/Object%20Mapping.md
      --stylesheet-media screen
      --print-background yes
      --output printIt.pdf

它是神奇的!


6
缺点:它只能在 OS X 上运行,并且会打印无用的页眉和页脚(是这样吗?我无法尝试此工具,因为我使用的是 Linux)。 - Giovanni Cappellotto
由于苹果公司对OS X进行了更改,wkpdf不再由作者维护。 - Chris Miller
链接已失效。经过一番搜索,我认为这个链接应该是正确的:https://github.com/plessl/wkpdf - Ole Tolshave

3
我正在使用github-wiki-print浏览器扩展程序来打印GitHub维基页面。
我认为您可以编辑其manifest.json文件以打印GitHub存储库上的任何Markdown文件。

2

我的浏览器还不支持此功能,等它更新后我会测试这个解决方案的有效性,如果真的有效我会点赞的。 - pulkitsinghal

2
尝试使用grip。
pip install grip
grip markdown.md

然后它被托管在本地端口上。从您喜欢的浏览器中,您可以通过本机操作系统打印对话框打印或保存为PDF。

请参见这里


2

使用File.open("/path/to/output.html", 'w') {|f| f.write(BlueCloth.new(File.read("/path/to/input.md")).to_html()) }可以得到一个HTML页面,但是其中没有来自GitHub的格式或颜色。这是打印出我在浏览器上看到的漂亮版本的关键部分,那么BlueCloth是否适合这个任务?为什么? - pulkitsinghal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接