有没有直接的方法可以通过python从markdown文件生成pdf [关闭]

Posted

技术标签:

【中文标题】有没有直接的方法可以通过python从markdown文件生成pdf [关闭]【英文标题】:Is there any direct way to generate pdf from markdown file by python [closed] 【发布时间】:2011-05-07 07:51:02 【问题描述】:

作为标题,我想使用markdown作为我的主要编写格式,我需要使用纯python从markdown生成PDF文件。

【问题讨论】:

已经有很多库可以做这种事情了。一个快速的谷歌出现了 pandoc (johnmacfarlane.net/pandoc),它看起来相当不错,虽然它不是在 Python 中。 github.com/n1k0/landslide 是纯 Python。 山崩看起来与 pdf 或降价无关。我是否错过了它可以做的事情? 它从 Markdown(或 ReStructured Text)创建幻灯片演示,并可以将它们导出为 PDF。也许对所问的内容有点专业。 我相信 pandoc 也经历过(巨大的)TeX。 这是我发现的最简单的方法(也是唯一对我有用的方法),它使用 GRIP。 (Link) 【参考方案1】:

我已经完成并将分两步完成。首先,我会使用 python-markdown 将我的 Markdown 制作成 html,然后我会使用 xhtml2pdf 制作 PDF 文件。

编辑(2014 年):

如果我现在这样做,我可能会选择WeasyPrint 作为我的 HTML 转 PDF 工具;它做得很好,我最近在几个项目中使用它。

【讨论】:

对于这个问题,您的原始答案更好,因为 WeasyPrint 虽然可能更好,但不是“纯 Python”。或者,完全准确; WeasyPrint 本身可能是纯 python,但它依赖于其他不是的模块。 我没有想到这一点。谢谢你的澄清。 有几个库可以将 HTML 转换为 PDF。我使用的是PyMuPDF,它可以打开一个HTML文档并使用convert_to_pdf方法生成PDF。链接页面上的示例。【参考方案2】:

2015 年更新:

我会使用pdfkit 和Python-Markdown 的组合。虽然这不是一个纯 Python 解决方案,但我发现它效果最好,尤其是在您使用 Python 3 时。

首先,安装 prereq(或在此处下载:http://wkhtmltopdf.org/downloads.html):

# Ubuntu
apt-get install wkhtmltopdf

然后,必要的 Python 包:

pip install pdfkit
pip install markdown

那么就真的很简单了:

from markdown import markdown
import pdfkit

input_filename = 'README.md'
output_filename = 'README.pdf'

with open(input_filename, 'r') as f:
    html_text = markdown(f.read(), output_format='html4')

pdfkit.from_string(html_text, output_filename)

【讨论】:

但是 wkhtmltopdf 需要一个 xserver:github.com/JazzCore/python-pdfkit/wiki/… 成功了,但是字体太小了,怎么配置? @HumoyunAhmad 在写入 pdf 之前将 CSS 链接元素插入到 html_text 中,并将您的样式放入该单独的文件中。这不是微不足道的,我们应该在这个答案中提供一个自定义 CSS 文件的例子。请注意,您可以通过将 html_text 直接写入 html 文件并在继续之前确保它是好的来更好地调试它。 @HumoyunAhmad 我在答案中添加了一个更高级的示例,也可以解决您的问题。

以上是关于有没有直接的方法可以通过python从markdown文件生成pdf [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从 jinja2 调用 python 函数

直接从文件运行 python 方法/函数

在使用 python 进行网络抓取时,是不是有任何直接的方法可以从输出中删除 \xa0 [重复]

Markdown 使用中常见的问题及解决方法

测试接口直接生成API文档,这个工具贼好用

python 抽象基类(abc)