【发布时间】:2012-01-22 07:14:04
【问题描述】:
我之前有一个问题,即使我指定@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
字体现在可以使用我犯了一个愚蠢的错误...我使用的字体没有中文 unicode。但我仍然无法将任何图像嵌入到 pdf 中,无论是 jpeg、gif 还是 png。
【问题讨论】:
-
你确定你的字体真的有汉字吗?字体可能是 unicode,但仍然缺少一些字符。
-
logger问题无关(且无害) -
感谢您的反馈。字体现在可以使用,但图像仍然无法使用
-
zentenk,我看到我的代码对你有帮助。不要忘记在您之前的回答中投票支持我的帖子;)另外,请告诉您:1)此代码适用于我并已使用图像进行测试。 2)在比萨浪费了很多时间后,我将报告移至pod
-
我认为您应该尝试使用 jpg 图像文件。