2010-11-09 28 views
21

Như tiêu đề, tôi muốn sử dụng markdown làm định dạng ghi chính của mình và tôi cần tạo tệp PDF từ markdown bằng cách sử dụng python tinh khiết.Có cách nào trực tiếp để tạo pdf từ tập tin đánh dấu bằng python

+2

có một lo t của các thư viện để làm điều này. Một google nhanh chóng bật lên pandoc (http://johnmacfarlane.net/pandoc/) trông khá đẹp, mặc dù nó không phải trong Python. https://github.com/n1k0/landslide là Python thuần túy. – katrielalex

+0

lở đất không giống như nó có bất cứ điều gì để làm với pdf hoặc markdown. Tôi có thiếu cái gì mà nó có thể làm được không? – TwentyMiles

+1

Nó tạo ra các bài thuyết trình slide từ Markdown (hoặc Reformructured Text) và có thể xuất chúng sang PDF. Có lẽ một chút chuyên về những gì được hỏi. – JasonFruit

Trả lời

15

Tôi đã thực hiện và sẽ thực hiện theo hai bước. Đầu tiên, tôi muốn sử dụng python-markdown để tạo HTML ra khỏi Markdown của tôi, và sau đó tôi sẽ sử dụng xhtml2pdf để tạo một tệp PDF.

Chỉnh sửa (2014):

Nếu tôi được làm điều này bây giờ, tôi có thể chọn WeasyPrint như tôi HTML-to-PDF công cụ; nó làm một công việc tuyệt vời, và tôi đã sử dụng nó trên một vài dự án gần đây.

+2

Câu trả lời ban đầu của bạn tốt hơn cho câu hỏi này, như WeasyPrint, trong khi có lẽ cao hơn, không phải là "thuần túy Python". Hoặc, là hoàn toàn chính xác; WeasyPrint có thể là con trăn thuần túy, nhưng nó dựa vào các mô-đun khác. –

+0

Tôi đã không nghĩ rằng thông qua. Cảm ơn bạn đã làm rõ. – JasonFruit

6

Cập nhật cho năm 2015:

Tôi sẽ sử dụng một sự kết hợp của pdfkitPython-Markdown. Trong khi điều này không phải là một giải pháp Python tinh khiết, nhưng tôi đã tìm thấy nó hoạt động tốt nhất, đặc biệt là nếu bạn đang sử dụng Python 3.

Đầu tiên, hãy lắp một prereq (hoặc tải về tại đây: http://wkhtmltopdf.org/downloads.html):

# Ubuntu 
apt-get install wkhtmltopdf 

Sau đó, các gói Python cần thiết:

pip install pdfkit 
pip install markdown 

Sau đó, nó thực sự là rất đơn giản:

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) 
+0

nhưng wkhtmltopdf cần một máy chủ xserver: https://github.com/JazzCore/python-pdfkit/wiki/Using-wkhtmltopdf-without-X-server – Dirk

+0

nó hoạt động, nhưng kích thước phông chữ rất nhỏ, làm thế nào tôi có thể cấu hình nó? – Humoyun

+0

Tôi có hướng dẫn đầy đủ với các ví dụ tạo kiểu tại đây: http://www.peregrinesalon.com/blog/2015/06/python-3-django-generating-a-pdf-from-markdown-or-html/ – FlipperPA

Các vấn đề liên quan