diff options
Diffstat (limited to 'ishtar_common/views.py')
| -rw-r--r-- | ishtar_common/views.py | 39 | 
1 files changed, 21 insertions, 18 deletions
| diff --git a/ishtar_common/views.py b/ishtar_common/views.py index b8350c62a..8d475aff5 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1,6 +1,6 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- -# Copyright (C) 2010-2016  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2017  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet>  # This program is free software: you can redistribute it and/or modify  # it under the terms of the GNU Affero General Public License as @@ -21,13 +21,7 @@ from tidylib import tidy_document as tidy  from copy import copy, deepcopy  import csv -import cStringIO as StringIO  import datetime - -import reportlab -reportlab.Version = "2.2"  # stupid hack for an old library... -import ho.pisa as pisa -  import json  import logging  from markdown import markdown @@ -35,6 +29,8 @@ import optparse  import re  from tempfile import NamedTemporaryFile  import unicodedata +from weasyprint import HTML, CSS +from weasyprint.fonts import FontConfiguration  from extra_views import ModelFormSetView @@ -42,6 +38,7 @@ from django.conf import settings  from django.contrib.auth import logout  from django.contrib.auth.decorators import login_required  from django.contrib.postgres.search import SearchQuery +from django.contrib.staticfiles.templatetags.staticfiles import static  from django.core.exceptions import ObjectDoesNotExist  from django.core.urlresolvers import reverse, NoReverseMatch  from django.db.models import Q, ImageField @@ -1333,19 +1330,25 @@ def show_item(model, name, extra_dct=None):          elif doc_type == 'pdf':              tpl = loader.get_template('ishtar/sheet_%s_pdf.html' % name)              context_instance['output'] = 'PDF' -            content = tpl.render(context_instance, request) -            result = StringIO.StringIO() -            html = content.encode('utf-8') -            html = html.replace("<table", "<pdf:nextpage/><table repeat='1'") -            pdf = pisa.pisaDocument(StringIO.StringIO(html), result, -                                    encoding='utf-8') -            response = HttpResponse(result.getvalue(), -                                    content_type='application/pdf') +            html = tpl.render(context_instance, request) +            font_config = FontConfiguration() +            css = CSS(string=''' +            @font-face { +                font-family: Gentium; +                src: url(%s); +            } +            body{ +                font-family: Gentium +            } +            ''' % (static("gentium/GentiumPlus-R.ttf"))) +            css2 = CSS(filename=settings.STATIC_ROOT + '/media/style_basic.css') +            pdf = HTML(string=html, base_url=request.build_absolute_uri() +                       ).write_pdf(stylesheets=[css, css2], +                                   font_config=font_config) +            response = HttpResponse(pdf, content_type='application/pdf')              response['Content-Disposition'] = 'attachment; filename=%s.pdf' % \                                                filename -            if not pdf.err: -                return response -            return HttpResponse(content, content_type="application/xhtml") +            return response          else:              tpl = loader.get_template('ishtar/sheet_%s_window.html' % name)              content = tpl.render(context_instance, request) | 
