26 lines
802 B
Python
26 lines
802 B
Python
import textwrap
|
|
|
|
from orchestra.utils.sys import run
|
|
|
|
|
|
def html_to_pdf(html, pagination=False):
|
|
""" converts HTL to PDF using wkhtmltopdf """
|
|
context = {
|
|
'pagination': textwrap.dedent("""\
|
|
--footer-center "Page [page] of [topage]"\\
|
|
--footer-center "Page [page] of [topage]" \\
|
|
--footer-font-name sans \\
|
|
--footer-font-size 7 \\
|
|
--footer-spacing 7"""
|
|
) if pagination else '',
|
|
}
|
|
cmd = textwrap.dedent("""\
|
|
PATH=$PATH:/usr/local/bin/
|
|
xvfb-run -a -s "-screen 0 2480x3508x16" wkhtmltopdf -q \\
|
|
--use-xserver \\
|
|
%(pagination)s \\
|
|
--margin-bottom 22 \\
|
|
--margin-top 20 - -\
|
|
""") % context
|
|
return run(cmd, stdin=html.encode('utf-8')).stdout
|