2011-02-12 64 views
1

使用svglib在django中呈現我的svg文件(由模板呈現)。 渲染時,圖書館如何解析圖像的路徑似乎存在問題。 我想知道是否有人已經實現了這一點,或知道一個更好的方式將SVG(包括圖像)轉換爲PDF?Django,svglib和圖像

編輯: 我的觀點:

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

我添加了代碼。 – zsquare

回答

0

我沒有使用SVGALib之上,但也有許多優秀的命令行工具,可以使SVG爲PDF。 Inkscape有一個完整的命令行界面,可以無人運行。只需查看手冊頁以獲取更多信息。另一個好的是Batik SVG Rasterizer,它使用Java,但可以從命令行運行。最後,ImageMagick(命令行中的「convert」實用程序)對SVG轉換爲其他的光柵和矢量格式提供了一些支持。

你也許可以看到這是怎麼回事。您可以使用python的os.system函數對這些命令行工具之一執行系統調用,將結果轉儲到文件中,或者對於支持它的工具,將stdout轉儲到緩衝區中。像現在一樣使用緩衝區。