2011-02-12 21 views
1

私はsvglファイルを使って(テンプレートからレンダリングされた)svgファイルをdjangoでレンダリングしています。 レンダリング時にライブラリの画像のパスを解決する方法に問題があるようです。 誰かがこれを実装しているのか、svg(画像を含む)をPDFに変換する良い方法を知っているのでしょうか?Django、svglib、images

EDIT: マイビュー:HTMLへのSVGについて

def certificate_image(response, id, output): 
    ... 
    ... 
    data = certificate_template.render(c) 

    if output == 'pdf': 
     doc = xml.dom.minidom.parseString(data) 
     svg = doc.documentElement 

     svgRenderer = SvgRenderer() 
     svgRenderer.render(svg) 
     drawing = svgRenderer.finish() 
     buffer = StringIO() 
     renderPDF.drawToFile(drawing, buffer) 
     response = HttpResponse(mimetype='application/pdf') 
     response['Content-Disposition'] = 'attachment; filename=certificate.pdf' 
     pdf = buffer.getvalue() 
     buffer.close() 
     response.write(pdf) 

    return response  
+0

今まで行ったことを(コード)表示できますか? –

+0

Iveがコードを追加しました。 – zsquare

答えて

0

何?それは変換するSVGに依存しますが、結果が同じであることもあります。 これは関連性があり、助けてくれるかどうか、または質問がある場合はお知らせください。

ツールがある指示ページに移動します。

http://irunmywebsite.com/raphael/svgsource.php

0

私はsvglibを使用していないが、PDFにSVGをレンダリングすることができ、多くの優れたコマンドラインツールがあります。 Inkscapeには完全なコマンドラインインターフェイスがあり、ヘッドレスで実行できます。これに関する詳細はmanページを見てください。別の良い1つはBatik SVG Rasterizerです。これはJavaを使用していますが、コマンドラインから実行することもできます。最後に、ImageMagick(コマンドラインの "convert"ユーティリティ)は、他のラスタ形式とベクトル形式へのSVG変換をサポートしています。

おそらくこれがどこにあるのか分かります。 Pythonのos.system関数を使用して、これらのコマンドラインツールの1つにシステムコールを実行したり、結果をファイルにダンプしたり、ツールをサポートするツールでstdoutしたり、結果をバッファに読み込んだりすることができます。あなたは今やっているのとまったく同じようにバッファを使います。