3

Django で HTML を PDF ドキュメントに変換しようとしていますが、成功していません。

wkhtmltopdf 0.9.9 を使用してみましたが、Apache は wkhtmltopdf がサーバーに接続できないというエラーをスローします。wkhtmltopdf を直接使用すると、問題なく動作し、HTML が PDF ドキュメントに変換されます。

unoconv も使用してみましたが、レンダリングされた PDF ファイルには CSS が適用されていません。xhtml2pdf も使用してみました。繰り返しますが、同じ問題に直面しています。レンダリングされた PDF ファイルには、CSS スタイルが適用されていません。今日と昨夜の大部分をこの問題の解決に費やしましたが、まだ問題の解決に近づいていません。

さらに情報が必要な場合はお知らせください

4

3 に答える 3

4

Django 用に Pisa を構成するのはそれほど難しいことではありません。

ネット上には、その方法を示し、テンプレートで外部リソースにリンクする方法を説明する例が実際にいくつかあります。

あなたの場合、最初のブログ投稿に記載されている link-callback-function を試す必要があります。

def fetch_resources(uri, rel):
    """
    Callback to allow pisa/reportlab to retrieve Images,Stylesheets, etc.
    `uri` is the href attribute from the html link element.
    `rel` gives a relative path, but it's not used here.

    """
    path = os.path.join(settings.MEDIA_ROOT, uri.replace(settings.MEDIA_URL, ""))
    return path

新しいDjango-Versionの場合、おそらくSTATIC_ROOT代わりに使用する必要がありますMEDIA_ROOT

次にfetch resources、render-method で適宜使用します。

pdf = pisa.pisaDocument(StringIO.StringIO(
        html.encode("UTF-8")), 
        result, 
        link_callback=fetch_resources,
        encoding="utf-8")
于 2011-09-28T14:17:27.613 に答える
0

pisa、pypdf、html5libの組み合わせを使用することをお勧めします。それは私にとってはうまくいきました。

于 2011-09-28T14:13:46.373 に答える
0

可能ですが、それほど洗練されていない解決策は、ヘッドレス ブラウザー コンポーネント (Linux では webkit/xvfb) を介して html をレンダリングし、pdf として保存する小さなスクリプトを実行することです。

于 2011-09-28T14:26:40.240 に答える