【问题标题】:How to print from GitHub如何从 GitHub 打印
【发布时间】:2012-04-17 09:45:27
【问题描述】:

如果我想从 GitHub 打印屏幕上显示的 Markdown 文件,例如: https://github.com/RestKit/RestKit/blob/master/Docs/Object%20Mapping.md

那我该怎么做呢?我需要在生成的 github html 页面(我保存的)中更改哪些代码,以便打印输出符合降价的外观和感觉?

到目前为止,我唯一的线索就是这个: https://makandracards.com/makandra/4947-how-to-print-github-wiki-pages 但它更像是一种实用(非编程)的解决方法,它并没有真正起作用,因为使用的 markdown 解释器不像 GitHub 网站上运行的那样宽容,所以它会出错。

【问题讨论】:

    标签: github markdown pretty-print


    【解决方案1】:

    http://github.com/github/markup

    您没有提到语言偏好,但这是 GitHub 本身用于呈现标记文件的 Ruby 库。它的优点是支持各种markups GitHub 支持(纺织品、rdoc 等)。渲染 .markdown 文件依赖于 redcarpet markdown 解析器:

    http://github.com/tanoku/redcarpet

    【讨论】:

      【解决方案2】:

      克隆仓库

      gem install bluecloth
      
      • 将markdown文件渲染成html
      • 在您的文件系统上打开文件 您的浏览器
      • 从浏览器打印

      http://deveiate.org/projects/BlueCloth

      您可以在此处找到该 api 的示例:http://deveiate.org/projects/BlueCloth/browser/spec/bluecloth_spec.rb

      【讨论】:

      • File.open("/path/to/output.html", 'w') {|f| f.write(BlueCloth.new(File.read("/path/to/input.md")).to_html()) } 给了我一个 HTML 页面来查看,但没有来自 GitHub 的格式或颜色。这是打印出我在浏览器上看到的漂亮版本的关键部分,BlueCloth 是一个合适的工具吗?怎么样?
      【解决方案3】:

      找到了一个很棒的工具,可以实现我要求的打印结果: 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
      

      这太神奇了!

      【讨论】:

      • 缺点:它只在 OS X 上运行,它打印无用的页眉和页脚(是吗?我不能尝试这个工具,因为我在 Linux 上)
      • 并且由于 Apple 对 OS X 的更改,wkpdf 不再由作者维护。
      • 链接不再有效。经过一番谷歌搜索后,我认为这个链接应该是正确的:github.com/plessl/wkpdf
      【解决方案4】:

      我建议用http://awesomescreenshot.com/ 拍照,然后裁剪图像并打印(我刚刚这样做了,它对我有用:)。

      【讨论】:

      • 我的浏览器还不支持,我一定会在这个解决方案可用时测试它的有效性,如果它确实有效,我会投票赞成。
      【解决方案5】:

      这里是a bookmarklet,非常适合我:

      1. 复制书签 Gist 的内容,复制如下作为备份。
      2. 在浏览器的工具栏中创建一个新书签,并为其命名。
      3. 将那一行代码放在 URL 字段中。

      如果您现在转到 Github 上的 Markdown 页面并单击书签,它将重新格式化页面并更改 CSS,以便在打印时看起来与屏幕上相同。现在只需打印页面。

      书签内容:

      javascript:(function(e,a,g,h,f,c,b,d)%7Bif(!(f=e.jQuery)%7C%7Cg%3Ef.fn.jquery%7C%7Ch(f))%7Bc=a.createElement(%22script%22);c.type=%22text/javascript%22;c.src=%22http://ajax.googleapis.com/ajax/libs/jquery/%22+g+%22/jquery.min.js%22;c.onload=c.onreadystatechange=function()%7Bif(!b&&(!(d=this.readyState)%7C%7Cd==%22loaded%22%7C%7Cd==%22complete%22))%7Bh((f=e.jQuery).noConflict(1),b=1);f(c).remove()%7D%7D;a.documentElement.childNodes%5B0%5D.appendChild(c)%7D%7D)(window,document,%221.3.2%22,function($,L)%7B$('%23header,%20.pagehead,%20.breadcrumb,%20.commit,%20.meta,%20%23footer,%20%23footer-push,%20.wiki-actions,%20%23last-edit,%20.actions,%20.header,.site-footer,.repository-sidebar,.file-navigation,.gh-header-meta,.gh-header-actions,#wiki-rightbar,#wiki-footer,.commit-tease').remove();%20$('%23files,%20.file').css(%7B%22background%22:%22none%22,%20%22border%22:%22none%22%7D);%20$('link').removeAttr('media');%7D); var removeMe = document.getElementsByClassName("file-header")[0]; removeMe.parentNode.removeChild(removeMe);
      

      【讨论】:

      • 我发现这个小书签没有正确删除登录用户的 Github 标头,所以我更新了它at an updated gist here
      • 自新的 github 设计后损坏
      • 是否有这个文件的未压缩版本,以防我想尝试一些编辑?这是目前 gist 中所有压缩/加密的代码。
      • 答案已更新为来自@randomor 的最新版本
      • 我添加了进一步的改进以删除标题元数据、标题操作、右侧栏和页脚(2014 年 10 月):gist.github.com/BenjaminKlatt/fefb0c53fbe16bc537c3
      【解决方案6】:

      如果您有Instapaper 帐户,请导航至 README.md 文件,将链接保存到 Instapaper,然后在该链接上打开 Instapaper 中的“文本”选项。大部分“杂乱无章”被移除,页面打印效果良好。

      【讨论】:

        【解决方案7】:

        我正在使用 github-wiki-print 浏览器扩展来打印 GitHub wiki 页面。

        我认为您可以编辑其manifest.json 文件以打印 GitHub 存储库上的任何降价文件。

        【讨论】:

          【解决方案8】:

          如果您是 Mac 用户,另一个很大的可能性是使用 Safari 网络浏览器中的“阅读器”功能。

          只要打开markdown-File,点击右上角的“Reader”-Button即可。

          然后只需使用命令“CMD + P”打印页面。

          像魅力一样工作。

          【讨论】:

          • 这似乎不再适用于最新的 iOS/Safari :(
          • 在 macOS 10.14 Mojave 上运行良好,尽管在将硬拷贝打印到纸上后,我的文件名奇怪地位于 .md(降价)文件第一行的 H1(最大标题)下方。
          【解决方案9】:

          使用GitPrint 是直接从 Github 打印文件的好方法。

          【讨论】:

          • GitPrint 似乎提供空的 pdf 文件。这可能是一个暂时的问题,但如果它不可靠,该工具仍然是无用的。
          • 请注意,如果您尝试从私人 Github 存储库打印,此选项将不起作用。
          • GitPrint 也会破坏格式,渲染(对不起双关语)它没用。
          • GitPrint 不起作用。关于根本不处理他们的 github 问题有多个未解决的问题
          • 我可以确认 GitPrint 不再工作 =(
          【解决方案10】:

          只需要 Chrome 的超级简单方法:

          您可以欺骗用户代理,告诉您您是移动设备,以获得漂亮的可打印版本。

          我这样做的方式 - 有很多方法 - 我使用 Chrome 的 Chrome devTools“仿真”功能来模拟 Android 设备,例如三星 Note 3,然后在屏幕子部分中删除“模拟屏幕”,以获得完整分辨率,然后打印。

          【讨论】:

            【解决方案11】:

            简单破解:

            我一直在以Marked 或在线工具Dillinger 之类的方式打开降价文件,然后从那里打印。其中一些工具允许您将格式设置为 Github 或其他样式。

            更好的方法:

            自从我第一次写上面的答案后,我找到了一个更好的方法:

            我发现了比我之前说的更好的方法。

            1. Git clone your wiki 到本地目录
            2. 使用 gitbook 和 Calibre 的 ebook-convert 按照https://github.com/GitbookIO/gitbook 中的说明生成 PDF

              • 在 Mac 上,您必须在运行 gitbook pdf 命令之前将 /Application/calibre.app 目录中的 ebook-convert 符号链接到合适的位置,命令如下:

              ln -s /Applications/calibre.app/Contents/console.app/Contents/MacOS/ebook-convert /usr/local/bin

            【讨论】:

              【解决方案12】:

              我使用MarkdownPad 并将 HTML 打印到 PDF 编写器。如果您有 Pro,则可以直接导出为 PDF。

              【讨论】:

                【解决方案13】:

                尝试抓握。

                pip install grip
                grip markdown.md
                

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

                here

                【讨论】:

                  【解决方案14】:

                  另一个选项是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 cask install basictex
                  pandoc README.md -f markdown+smart -s -o out.pdf --pdf-engine=/Library/TeX/texbin/pdflatex --pdf-engine=xelatex
                  

                  【讨论】:

                  【解决方案15】:

                  另一种方法是从 GitHub 或 Bit Bucket 下载 markdown 并使用 eclipse 打开它。您将在编辑器窗格中获得预览选项卡。从文件菜单中选择打印。简单的方法,但是我冒昧地假设您已经安装了 eclipse,通常大多数开发人员都有它。

                  BR

                  【讨论】:

                    【解决方案16】:

                    适用于 Chromium 浏览器和“当前”GitHub html 页面结构

                    1. 创建书签
                    2. 在地址字段中输入:
                    javascript:var content = document.querySelector('.repository-content'); 
                    var toc = document.querySelector('#wiki-rightbar');
                    toc.innerHTML = '';
                    var wb = document.querySelector('.has-rightbar .wiki-body');
                    wb.style.marginRight = '0px';
                    var body = document.querySelector('body'); 
                    body.innerHTML = ''; 
                    body.appendChild(content);
                    window.print();
                    

                    选择 Wiki 文本,删除和格式化目录,替换正文内容并调用打印机。

                    【讨论】:

                      【解决方案17】:

                      这是一个超级简单的解决方案:只需选择自述文件中要打印的所有文本,然后打印并选择“仅选定的文本”。

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

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

                      【讨论】:

                      • 不错! Chrome 中的选项现在称为More settings -- Selection only。它支持格式化,不需要额外的软件或下载markdown文件。
                      • 从 Firefox 打印时,选择要打印的内容,从“文件”菜单访问“打印”选项(或按ctrl + p),然后选择“选择”选项。
                      【解决方案18】:

                      我使用这个页面http://www.markdownprint.com,使用起来非常简单,并使用 github 样式生成降价(看起来非常好)。强烈推荐!

                      【讨论】:

                        【解决方案19】:

                        我制作了一个 Chrome 扩展程序来执行此操作:GitHub Markdown Printer。这是一种一键式解决方案,用于打印降价文件准确它们在 GitHub 上的显示方式。

                        步骤:

                        1. 安装 Chrome 扩展程序
                        2. 通过降价预览转到 GitHub/GitHub Enterprise 上的任何页面
                        3. 单击 GMP 图标打开打印对话框并打印或另存为 PDF

                        查看repo 了解更多信息。

                        【讨论】:

                        • 扩展读取和写入您访问的所有页面。不确定它有多安全
                        • @VikramKhemlani 这是一个合理的担忧,但我向你保证我没有做任何恶意的事情。需要读取权限来查看 1)您是否在 github 上以及 2)是否有有效的降价预览。需要写入权限才能添加自定义样式表以在打印时删除额外的元素。该项目是开源的,你可以在这里找到源代码:github.com/jerry1100/github-markdown-printer/tree/master/src。如果你仍然有疑问,你可以在你的 chrome devtools 中打开网络标签,发现我没有在任何地方发送任何数据。
                        • @JerryWu 在浏览器中管理扩展时,有一种方法可以手动设置扩展以仅在 gist.github.com 和 github.com 页面上工作,我很确定还有一种方法立即在您的扩展程序代码中为这些设置设置默认值。无论如何,荣誉,你的扩展比标记和复制页面更好,因为它会提供更好的样式,每页上可以打印很多文本。我喜欢这个扩展。我看到的唯一问题是它为 gist.github.com 上的 cmets 保留页面,所以我必须指定页面开始/结束以不打印很多空页面。
                        • @MartinBraun 感谢您的反馈。当我开发这个时,我在 IBM 工作,需要匹配 github.ibm.com。由于 github.*.com 不是有效的匹配模式,因此我采用了当前的方法。如果您知道一种侵入性较小的方法,请告诉我,我会尝试一下。另外,我在 gists 上解决了 cmets 的问题,请注意 v0.6 :)
                        • 好消息 - 从 v0.8 开始,由于新的 manifest v3 API,此扩展不再需要任何权限或站点访问。
                        【解决方案20】:

                        简单地将MD文件转换成PDF

                        您可以下载您的 .md 文件并上传here 以将其转换为 pdf 文件。您可以轻松打印。

                        【讨论】:

                          【解决方案21】:

                          在 Firefox 中这非常简单。

                          1. 选择要打印的部分,只需将鼠标从要打印的区域的开头拖到结尾即可。
                          2. 进入打印菜单文件 -> 打印(Ctrl-P 也可以)
                          3. 在打印菜单的“格式”选项下单击“选择”而不是“原始”
                          4. 点击打印。预览还应显示要打印的内容。

                          【讨论】:

                            猜你喜欢
                            • 2019-10-10
                            • 1970-01-01
                            • 1970-01-01
                            • 2020-04-04
                            • 1970-01-01
                            • 2022-06-21
                            • 2020-05-13
                            • 2012-12-08
                            相关资源
                            最近更新 更多