0

我之前遇到过一个问题,即使我指定@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。

4

5 回答 5

3

我终于解决了我遇到的问题......事实证明,如果我用 css 设置 's 高度它不起作用body......一旦我删除了那条线,图像就会完美加载......

于 2012-02-12T15:06:55.217 回答
0

一切看起来都更好了。使用 JPG 图像文件尝试一次。就我而言,PNG 文件也无法正常工作。

<img src="/static/images/<name>.jpg" />
于 2014-04-02T18:11:34.093 回答
0

没有widthheight属性图像将不起作用。添加宽度和高度属性。

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

这个修复对我有用。

于 2014-05-07T13:13:22.760 回答
0

For me (django 1.4, python 2.7 pisa==3.0.33), If I put the full path of image instead of relative, it works for me. Try doing the same.

于 2013-03-18T07:04:24.103 回答
-2

我在这里有同样的问题。不要放弃 XHTML2PDF Pisa。
Pisa 使用 PIL 生成 PDF 并使用 lib zip 解码器插入图像。
你应该检查你的 PIL 是否已经正确安装了 zip 解码器、字体和几个组件

我通过安装带有 zip 解码器的 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/

于 2012-02-10T03:05:48.270 回答