2012-01-22 45 views
0

我之前有一个问题,即使当我指定@font-face使用UTF-8字体时,它也不会显示中文字符。事实证明,我无法显示图像以及...所以我好像我无法将任何文件嵌入到我的PDF中。无法加载图像/文件比萨pdf Django python

这是我使用的代码:

<img src="/static/images/bc_logo_bw_pdf.png" /> 

@font-face { 
     font-family: "Wingdings"; 
     src: url("/static/fonts/wingdings.ttf"); 
    } 

我看了看其他任务上SO

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,但它并没有帮助。这两个功能也没有例外。同样在fetch_resources函数中,返回的路径是该文件的正确完整路径,即/home/<user>/project/static/images/bc_logo_bw_pdf.png/home/<user>/project/static/fonts/wingdings.ttf,我不知道什么是错的。

UPDATE 每次我创建一个PDF,我得到的控制台

No handlers could be found for logger "ho.pisa" 

这个消息可能此有关?

更新#2

字体现在的工作我犯了一个愚蠢的错误......我用的是没有对中国的Unicode字体。但是我仍然无法在pdf上嵌入任何图像,无论是jpeg,gif还是png。

+2

你确定你的字体真的有中文字吗? Fount可能是unicode,但仍缺乏一些字符。 –

+0

'logger'问题无关(并且无害) – plaes

+0

感谢您的反馈。字体现在工作,但图像仍然不起作用 – zentenk

回答

-2

我在这里有同样的问题。不要放弃XHTML2PDF比萨。
比萨使用PIL生成PDF并使用lib zip解码器插入图像。
你应该检查你的PIL已经与拉链解码器,字体和几个组件

我有带拉链解码器安装PIL解决这个问题的正确安装。
http://obroll.com/install-python-pil-python-image-library-on-ubuntu-11-10-oneiric/

如果您需要更详细的信息,您可以在这里阅读我的文章: http://obroll.com/how-to-load-images-files-style-css-in-pdf-using-pisa-xhtml2pdf-on-django/

+0

尝试在您的网站上的说明,仍然不起作用:( – zentenk

+0

这不适用于我。 –

3

我终于解决了我是有这个问题......事实证明,如果我将它设置不起作用body的高度与CSS ...一旦我删除该行图像加载完美...

0

对我来说(django 1.4,蟒蛇2.7比萨== 3.0.33),如果我把完整的路径图像而不是相对的,它适用于我。 尝试做同样的事情。

0

一切都看起来更好。尝试一次使用JPG图像文件。在我的情况下,PNG文件也不起作用。

<img src="/static/images/<name>.jpg" /> 
0

没有widthheight属性图像将无法正常工作。添加宽度和高度属性。

<img src="{% static 'images/logo.png' %}" alt="image" width="200" height="150" /> 

此修补程序适用于我。