37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
import textwrap
|
|
|
|
from django.templatetags.static import static
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
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-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
|
|
|
|
|
|
def get_on_site_link(url):
|
|
context = {
|
|
'title': _("View on site"),
|
|
'url': url,
|
|
'image': '<img src="%s"></img>' % static('orchestra/images/view-on-site.png'),
|
|
}
|
|
return '<a href="%(url)s" title="%(title)s">%(image)s</a>' % context
|