Copy fonts to /project/directory/site_media/font.
#-*- coding: utf-8 -*- import cStringIO as StringIO import ho.pisa as pisa from django.contrib.auth.decorators import login_required from django.http import HttpResponse from django.shortcuts import get_object_or_404 from django.template import Context from django.template.loader import get_template from django.utils.translation import ugettext_lazy as _ from arap.report.models import Review from arap.report.models import Type from arap.settings import MEDIA_ROOT @login_required def print_report(request, id): """ Generuje raport z przeglądu. """ template = get_template('report/print.html') review = get_object_or_404(Review, id=id) context = Context({'pagesize':'A4', 'review':review, 'MEDIA_ROOT':MEDIA_ROOT}) html = template.render(context) result = StringIO.StringIO() pdf = pisa.pisaDocument(StringIO.StringIO(html.encode('UTF-8')), result) if not pdf.err: response = HttpResponse( result.getvalue() ) response['Content-Type'] = 'application/pdf' response['Content-Disposition'] = 'attachment; filename="%s-%s-%s.pdf";' \ %(review.server,review.report_type, review.created) return response return HttpResponse(u"Coś nie bangla.", mimetype='text/html')
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <style type="text/css"> @font-face { font-family: "arial","helvetica","symbol"; src: url({{ MEDIA_ROOT}}/font/arial.ttf); } @font-face { font-family: "arial black"; src: url({{ MEDIA_ROOT}}/font/arialbd.ttf); } @font-face { font-family: "verdana"; src: url({{ MEDIA_ROOT}}/font/verdana.ttf); } @font-face { font-family: "Times New Roman" ,"wingdings"; src: url({{ MEDIA_ROOT}}/font/Times_New_Roman.ttf); } @font-face { font-family: "Comic Sans Ms"; src: url({{ MEDIA_ROOT}}/font/Comic_Sans_MS.ttf); } @page { margin: 1cm; margin-bottom: 2.5cm; @frame footer { -pdf-frame-content: footerContent; bottom: 2cm; margin-left: 1cm; margin-right: 1cm; height: 1cm; } } html, body, table, caption, tbody, tfoot, thead, tr, th, td { font-family: "Times New Roman"; } </style> <title>Raport {{ review.report_type }} {{ review.server }} {{ review.created }}</title> </head> <body> {{ review.report|safe }} <div id="footerContent"> {%block pager %} <pdf:pagenumber> {%endblock%} </div> </body> </html>
Dziekuję, działa :)
ReplyDeleteDzięki, przydało się
ReplyDeleteHi,
ReplyDeleteI'm hungarian and I have the same problem with hungarian fonts like Őűőí and so on. I have tried your solution but it still doesn't work.
I generate the pdf text like this:
pdf = pisa.pisaDocument(StringIO.StringIO(
html.encode("UTF-8")), result, link_callback=fetch_resources,
encoding="utf8", xhtml=True)
but also tried the way as you wrote:
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode('UTF-8')), result)
I have also inserted the following code to my template:
@font-face {
font-family: "arial";
src: url("http://www.toolpart.hu/static/media/medialibrary/2010/04/arial.ttf");
}
html {
font-family: "arial";
}
Do you have an idea what else can I try?
Thanks for your help in advance.
Laszlo
Put fonts on disk instead off http:// ...
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
Delete