Раньше у меня была проблема, когда китайские символы не отображались, даже когда я указывал @font-face
для использования шрифта UTF-8. Оказывается, я также не могу отображать изображения ... поэтому мне кажется, что я не могу получить ни один из файлов, встроенных в мой PDF-файл.
Это код, который я использую:
def render_to_pdf(template_src, context_dict):
"""Function to render html template into a pdf file"""
template = get_template(template_src)
context = Context(context_dict)
html = template.render(context)
result = StringIO.StringIO()
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")),
dest=result,
encoding='UTF-8',
link_callback=fetch_resources)
if not pdf.err:
response = http.HttpResponse(result.getvalue(), mimetype='application/pdf')
return response
return HttpResponse('We had some errors<pre>%s</pre>' % escape(html))
def fetch_resources(uri, rel):
import os.path
from django.conf import settings
path = os.path.join(
settings.STATIC_ROOT,
uri.replace(settings.STATIC_URL, ""))
return path
HTML
<img src="/static/images/bc_logo_bw_pdf.png" />
и
@font-face {
font-family: "Wingdings";
src: url("/static/fonts/wingdings.ttf");
}
Я посмотрел на другие квесты на SO, но это не помогло. В этих двух функциях также не происходит никаких исключений. Также в функции fetch_resources
возвращаемый путь был правильным полным путем к файлу, то есть /home/<user>/project/static/images/bc_logo_bw_pdf.png
и /home/<user>/project/static/fonts/wingdings.ttf
, и я не понимаю, что не так.
ОБНОВЛЕНИЕ Каждый раз, когда я создаю PDF-файл, я получаю это сообщение на консоли
No handlers could be found for logger "ho.pisa"
это может быть связано?
ОБНОВЛЕНИЕ №2
Теперь шрифт работает. Я совершил глупую ошибку... В шрифте, который я использовал, не было китайского юникода. Но я по-прежнему не могу вставлять изображения в pdf, будь то jpeg, gif или png.
logger
проблема не имеет отношения к делу (и безобидна) - person plaes   schedule 22.01.2012