【问题标题】:Unable to load images/files pisa pdf Django python无法加载图像/文件比萨pdf Django python
【发布时间】: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/&lt;user&gt;/project/static/images/bc_logo_bw_pdf.png/home/&lt;user&gt;/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 图像文件。

标签: python django pisa


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    对我来说(django 1.4,python 2.7 pisa==3.0.33),如果我放置图像的完整路径而不是相对路径,它对我有用。 尝试做同样的事情。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

        这个修复对我有用。

        【讨论】:

          【解决方案5】:

          我在这里也有同样的问题。不要放弃 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/

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-10-29
            • 2016-12-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多