有没有直接的方法可以通过python从标记文件生成pdf

有没有直接的方法可以通过python从标记文件生成pdf,python,pdf-generation,markdown,Python,Pdf Generation,Markdown,作为标题,我想使用markdown作为我的主要写入格式,我需要使用纯python从markdown生成PDF文件 我已经做了,并且将分两步做。首先,我用我的降价制作HTML,然后我用它制作一个PDF文件 编辑(2014): 如果我现在这样做,我可能会选择作为我的HTML到PDF工具;它做得很好,最近我在几个项目中使用了它。2015年更新: 我会使用和的组合。虽然这不是一个纯粹的Python解决方案,但我发现它工作得最好,特别是如果您使用的是Python 3 首先,安装一个prereq(或在此处下

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

我已经做了,并且将分两步做。首先,我用我的降价制作HTML,然后我用它制作一个PDF文件

编辑(2014):

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

2015年更新:

我会使用和的组合。虽然这不是一个纯粹的Python解决方案,但我发现它工作得最好,特别是如果您使用的是Python 3

首先,安装一个prereq(或在此处下载:):

然后,提供必要的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)

有很多图书馆已经在做这类事情了。谷歌很快就找到了pandoc(),它看起来很不错,尽管它不是用Python编写的。它看起来与PDF或降价无关。我是否错过了一些它可以做的事情?它从降价(或重组文本)创建幻灯片演示文稿,并可以将其导出为PDF。对于所问的问题,可能有点专业化。我相信pandoc也会通过(ginormous)TeX。对于这个问题,您最初的答案更好,因为WeasyPrint虽然可能更优秀,但不是“纯Python”。或者,完全准确地说;WeasyPrint本身可能是纯python,但它依赖于其他模块,而这些模块不是。感谢您的澄清。但是wkhtmltopdf需要一个xserver:它工作了,但字体大小非常小,我如何配置它?@HumoyunAhmad在写入pdf之前在html_文本中插入CSS链接元素,并将您的样式放在单独的文件中。这不是小事,我们应该在这个答案中提供一个定制CSS文件的示例。注意:您可以通过将html_文本直接写入html文件,并在继续之前确保其正确,从而更好地调试此问题。@HumoyunAhmad我在答案中添加了一个更高级的示例,也解决了您的问题。
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)