У меня была проблема, прежде чем там, где китайские символы не будут отображаться, даже если я указал @font-face
на использование шрифта UTF-8. Оказывается, я тоже не могу отображать изображения ... поэтому мне кажется, что я не могу получить какие-либо файлы, вложенные в мой pdf.Не удалось загрузить изображения/файлы pisa pdf Django python
Это код, я использую:
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
, и я не согласен с тем, что не так.
UPDATE Everytime создать PDF-файл, я получаю это сообщение на консоли
No handlers could be found for logger "ho.pisa"
это могло быть связано?
UPDATE # 2
Шрифт работает теперь я сделал тупую ошибку ... Шрифт я использовал не имел китайский Юникода. Но я все еще не могу вставлять изображения в pdf, будь то jpeg, gif или png.
Вы уверены, что у вашего шрифта действительно есть иероглифы? Fount может быть unicode, но все еще не хватает некоторых символов. –
Вопрос 'logger' не связан (и безвреден) – plaes
Спасибо за отзыв. Шрифты работают сейчас, но изображение все еще не работает – zentenk