2010-11-09 32 views
21

Como título, quiero utilizar el marcado como mi formato de escritura principal y necesito generar archivos PDF a partir de la reducción usando python puro.¿Hay alguna forma directa de generar pdf desde un archivo de marcado por python?

+2

Hay un lo t de bibliotecas para hacer este tipo de cosas ya. Un Google rápido apareció Pandoc (http://johnmacfarlane.net/pandoc/) que se ve bastante bien, aunque no está en Python. https://github.com/n1k0/landslide es puro Python. – katrielalex

+0

deslizamiento de tierra no parece tener nada que ver con pdfs o rebajas. ¿Me estoy perdiendo algo que puede hacer? – TwentyMiles

+1

Crea presentaciones de diapositivas de Markdown (o ReStructured Text) y puede exportarlas a PDF. Tal vez un poco especializado para lo que se le preguntó. – JasonFruit

Respuesta

15

Lo he hecho y lo haría en dos pasos. Primero, usaría python-markdown para hacer HTML de mi Markdown, y luego usaría xhtml2pdf para hacer un archivo PDF.

Edición (2014):

Si yo estuviera haciendo esto ahora, podría elegir WeasyPrint como mi HTML a PDF herramienta; hace un trabajo hermoso, y lo he usado en un par de proyectos recientemente.

+2

Tu respuesta original fue mejor para esta pregunta, ya que WeasyPrint, aunque quizás sea superior, no es "puro Python". O, para ser completamente exacto; WeasyPrint puede ser python puro, pero depende de otros módulos que no lo son. –

+0

No lo había pensado así. Gracias por la aclaración. – JasonFruit

6

Actualización para 2015:

que utilizaría una combinación de pdfkit y Python-Markdown. Si bien esto no es una solución Python puro, pero he encontrado que funciona mejor, especialmente si usted está usando Python 3.

En primer lugar, instalar un prerrequisito (o descargar aquí: http://wkhtmltopdf.org/downloads.html):

# Ubuntu 
apt-get install wkhtmltopdf 

a continuación, los paquetes de Python necesarios:

pip install pdfkit 
pip install markdown 

entonces es muy simple:

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

pero wkhtmltopdf necesita un xserver: https://github.com/JazzCore/python-pdfkit/wiki/Using-wkhtmltopdf-without-X-server – Dirk

+0

funcionó, pero el tamaño de la fuente es muy pequeño, ¿cómo puedo configurarlo? – Humoyun

+0

Tengo un tutorial completo con ejemplos de estilo aquí: http://www.peregrinesalon.com/blog/2015/06/python-3-django-generating-a-pdf-from-markdown-or-html/ – FlipperPA

Cuestiones relacionadas