2012-04-19 3 views
1

Мне нужно преобразовать HTML + CSS + Javascript файл в PDF из представления Django и использовать Python.Преобразование HTML/CSS/Javascript файла в PDF с использованием Python?

Я мог бы использовать xhtml2pdf/PISA, но он поддерживает только HTML & CSS, а не Javascript, который требуется.

Другим вариантом будет py-wkhtmltox, но он становится довольно старым, и я еще не смог заставить его работать, я просто получаю «ImportError: libwkhtmltox.so.0: невозможно открыть файл общих объектов: Нет такой файл или каталог», не зная, где можно получить этот файл другого, то только из синих переименовывать libwkhtmltox.so в libwkhtmltox.so.0, но потом я просто получаю:

Traceback (most recent call last): 
    File "pdf_test1.py", line 5, in <module> 
    pdf.set_object_setting('path', 'http://www.google.com') 
    File "wkhtmltox.pyx", line 118, in wkhtmltox.Pdf.__getattr__ (wkhtmltox.c:1228) 
AttributeError: 'wkhtmltox._Pdf' object has no attribute 'set_object_setting' 

Еще одним варианта был бы использовать webkit (http://bharatikunal.wordpress.com/2010/01/31/converting-html-to-pdf-with-python-and-qt/), но я не могу выполнить «sys.exit (app.exec_())» из представления Django.

Единственное, что я могу сейчас подумать, это создать отдельный скрипт python webkit и os.system его из представления django, что делает возможным «sys.exit (app.exec_())», и поэтому результат в PDF , Но я открыт для других предложений, швы немного странные, чтобы использовать os.system из представления django.

Любые идеи?

+3

Зачем вам нужен javascript? Javascript никогда не будет отображаться в формате pdf. Если вы используете javascript для визуализации стиля, переместите его в css. Если вы используете javascript для динамического генерации html, вам нужно будет сделать это на сервере для преобразования PDF. Мое предложение, внесите коррективы, необходимые для работы с xhtml2pdf/PISA. Javascript не будет вариантом. –

+0

Эта библиотека (http://code.google.com/p/pyfpdf/), похоже, поддерживает javascript, я помню, как это делал в php с какой-то другой библиотекой, и даже отображал предупреждение и т. Д. –

ответ

3

Предлагаю использовать wkhtmltopdf. Он доступен как статический двоичный файл для Linux, поэтому вы не должны сталкиваться с проблемами с общими объектами. wkhtmltopdf обертывает webkit и поддерживает javascript, и вы даже можете сказать ему, как долго запускать любой JS-код до рендеринга. Я успешно использовал его для создания PDF-страниц страниц, на которых был написан сложный код генерации диаграмм. Просто запустите его, используя subprocess.call().

+0

Просто голова, будьте осторожны django-wkhtmltopdf, если вы развертываете его на Apache https://github.com/incuna/django-wkhtmltopdf/issues/15 – markhops

Смежные вопросы