如何将 Markdown 文件转换为 PDF
Posted
技术标签:
【中文标题】如何将 Markdown 文件转换为 PDF【英文标题】:How to convert a Markdown file to PDF 【发布时间】:2013-07-11 21:58:06 【问题描述】:我有一个想要转换为 PDF 的 Markdown 文件,以便我可以将它上传到 Speakerdeck。我正在使用 Pandoc 从 Markdown 转换为 PDF。
我的问题是我无法指定什么内容应该放在 PDF 的哪个页面上,因为 Markdown 不提供类似的功能。
例如,Markdown:
###Hello
* abc
* def
###Bye
* ghi
* jkl
现在我希望 Hello
成为一张幻灯片,Bye
成为 Speakerdeck 的另一张幻灯片。因此,我需要它们位于我使用 Pandoc 生成的 PDF 的不同页面上。
但Hello
和Bye
在 PDF 中位于同一页面上。
我怎样才能做到这一点?
【问题讨论】:
尝试使用 gimli ruby gem。很简单,参考见blog.kushdilip.com/2014/02/… 对于未来的读者,他们可能想查看github.com/alanshaw/markdown-pdf 【参考方案1】:通过终端(2020年测试)
下载依赖项
sudo apt-get install pandoc texlive-latex-base texlive-fonts-recommended texlive-extra-utils texlive-latex-extra
尝试使用
pandoc MANUAL.txt -o example13.pdf
pandoc MANUAL.md -o example13.pdf
通过 Visual Studio Code 扩展(2020 年测试)
下载Yzane Markdown PDF扩展 在 Markdown 文件中右键单击 (md
)
会出现下面的内容
选择Markdown PDF: Export (pdf)
选项
注意:表情符号在 Windows 中比在 Linux 中更好(我不知道为什么)
【讨论】:
在 Debian 上,安装这些依赖项并运行上面的命令后(使用.md
而不是 .txt
文件),我收到一个错误:File 'letltxmacro.sty' not found.
- 尽管该文件显然成为texlive-latex-base
的一部分。你知道为什么会这样吗?
不幸的是,我不知道:/
@domsson 我遇到了同样的问题。安装texlive-latex-extra
解决了它。
我们已经解决了这个问题:过多的表情符号是不必要和分散注意力的。此答案中的大多数选择都很糟糕,并且没有增加任何价值。你会注意到an 800k+ reputation moderator removed emoji from one of your posts a couple of weeks ago。这应该表明过度使用表情符号是不受欢迎的。 请不要更换它们。
在一个 debian:10 docker 镜像中,它尝试安装 1GB 的依赖项,所有这些只是为了将几千字节的 Markdown 转换为 PDF。我想知道是否有一个涉及更少开销的解决方案。【参考方案2】:
简单的在线解决方案:dillinger.io.
只需将您的 Markdown 内容粘贴到左侧的编辑器中,然后在右侧查看 (html
) 预览。然后点击顶部的Export as
,选择pdf
。
它基于open source dillinger 编辑器。
【讨论】:
pandoc
在我身上出错了,因为列表“太嵌套”(试图打印大纲导出),dillinger 工作,谢谢!【参考方案3】:
以前我使用过 npm markdown-pdf 答案。但是,在全新安装 Ubuntu 19.04 (Disco Dingo) 时,我无法正确安装它。
相反,我开始使用 Visual Studio Code 包:“Markdown PDF”
详情: 名称:Markdown PDF 编号:yzane.markdown-pdf 说明:将 Markdown 转换为 PDF 版本:1.2.0 发布者: yzane Visual Studio 市场链接:https://marketplace.visualstudio.com/items?itemName=yzane.markdown-pdf
它一直运作良好。如果您在获得其他答案时遇到问题,我建议您尝试一下。
【讨论】:
我刚刚在 Windows 和 Linux 上都做了这个。在这两种情况下,安装都很容易,并且无需任何配置或设置即可正常工作。【参考方案4】:添加到elias' answer,如果要分隔幻灯片中的文本,只需将***
放在要分隔的文本之间即可。为了让您的示例出现在几页中,请这样写:
### Hello
- abc
- def
***
### Bye
- ghi
- jkl
然后使用 elias 的答案,pandoc -t beamer -o output.pdf yourInput.md
。
我有Ubuntu 18.10 (Cosmic Cuttlefish) 并安装了 texlive 的完整包。它对我有用。
【讨论】:
【参考方案5】:2016 年更新:
NPM 模块:https://github.com/alanshaw/markdown-pdf
有命令行界面:https://github.com/alanshaw/markdown-pdf#usage
npm install -g markdown-pdf
markdown-pdf <markdown-file-path>
或者,在线服务:http://markdown2pdf.com
【讨论】:
使用在线服务,我不断收到Error generating PDF.
现在在线服务好像坏了。
@ÁrpádMagosányi 好吧,我在 Ubuntu 上使用它。具体什么不起作用。
适用于 Ubuntu 19.04 命令行。一些与事件相关的警告,但会生成正确的 pdf。
我测试过,表格在输出PDF中似乎没有分隔线【参考方案6】:
由于 SpeakerDeck 只接受 PDF 文件,最简单的选择是使用 Latex Beamer 后端为 pandoc
:
pandoc -t beamer -o output.pdf yourInput.mkd
请注意,您应该为此安装 LaTeX Beamer。
在 Ubuntu 中,您可以通过 sudo apt-get install texlive-latex-recommended
来安装它。如果你使用 Windows,你可以try this answer。
您可能还想试试 Slidy 的 HTML/CSS 输出:
pandoc --self-contained -t slidy -o output-slidy.html yourInput.mkd
它具有不错的打印输出,您可以查看trying to print the original。
阅读more about slideshows with pandoc here。
【讨论】:
pandoc -t beamer -o output.pdf yourInput.mkd
只生成一个 pdf 页面。多余的内容被剪掉了。
@alhelal 这里有同样的问题。有什么提示吗?
@rkioji 尝试其他答案中的提示,在要分页的位置添加 ***
。
apt-get install latex-beamer
不起作用,因为不可用
@Timo 谢谢,我刚刚检查过,截至今天,beamer
现在包含在texlive-latex-recommended
中,所以这是要使用的包名称。我会更新答案。【参考方案7】:
你可以试试Typ。 getting started documentation 以与您描述的方式类似的方式从 Markdown 创建 PDF。
【讨论】:
【参考方案8】:我已经设法获得了一个稳定的 Markdown -> HTML > PDF 管道与 MarkReport 项目一起使用。
它比 Pandoc 做的要多一点,因为它基于 WeasyPrint,因此旨在用于干净的报告发布,包括封面、标题、部分...... 它还通过语法高亮和 LaTeX 方程丰富了 HTML。
【讨论】:
小提示:pandoc 也可以通过 WeasyPrint 导出。 (很有用,例如,在从包含引用的文档中定位 HTML 时)。以上是关于如何将 Markdown 文件转换为 PDF的主要内容,如果未能解决你的问题,请参考以下文章