5

まず、これに関する他のスレッドを見て、これを修正するためにほぼすべてを試しましたが...

Pisa を使用して HTML ページを PDF にレンダリングすると、HTML の画像が著しく失われます。つまり、ページを HTML にレンダリングするとすべてがうまくいきますが、Pisa を使用して出力を PDF に切り替えると、画像が消えます。

私が見つけた最も一般的なことは、次のようにリンク コールバック関数を作成することです。

def fetch_resources(uri, rel):
    path = os.path.join(settings.MEDIA_ROOT, uri.replace(settings.MEDIA_URL, ""))
    return path

def my_view(request, variable1):
    html = render_to_string('template_goes_here.html', dict, context_instance=RequestContext(request))
    result = StringIO()
    pdf = pisa.pisaDocument(StringIO(html.encode("UTF-8")), dest=result, link_callback=fetch_resources)
    if not pdf.err:
        return HttpResponse(result.getvalue(), mimetype='application/pdf')
    return HttpResponse('Pisa hates you! %s' % cgi.escape(html))

ただし、これは機能しません。PDF が表示されますが、画像がありません。

また、HTML を mkstemp に書き込み、コマンド ライン経由で PDF に変換し、HTML を出力するという別のスレッドの提案も読みましたが、そこでも成功しませんでした。

同様の問題を抱えている人のために、1.1.17の代わりにPIL 1.1.16をインストールしようとさえしました-ダイスはありません。

ここで私が間違っている場所について誰かが考えを持っていますか?

4

2 に答える 2

3

これを見てからしばらく経ちましたが、ラムダまたは関数ツールを使用する必要があると思います。

例えば

links = lambda uri, rel: os.path.join(settings.MEDIA_ROOT, 
    uri.replace(settings.MEDIA_URL, ''))


pdf = pisa.pisaDocument(StringIO(html.encode("UTF-8")),
    dest=result, link_callback=links)
于 2012-03-19T22:41:27.993 に答える
0

これが役立つかもしれないと思います。私の場合、Windows でのスラッシュの使用が原因でした。https://stackoverflow.com/a/12644633/1236599

于 2012-10-12T18:51:29.043 に答える