从SVG转换为PDF

5
我正在尝试使用以下代码将一个svg文件转换为pdf,但出现了错误。
源代码:
from svglib.svglib import svg2rlg
from reportlab.graphics import renderPDF
drawing = svg2rlg("test.svg")
renderPDF.drawToFile(drawing, "test.pdf")

错误:
pydev debugger: starting
Traceback (most recent call last):
  File "C:\Users\Stone\.eclipse\org.eclipse.platform_4.3.0_1709980481_win32_win32_x86\plugins\org.python.pydev_2.8.2.2013090511\pysrc\pydevd.py", line 1446, in <module>
    debugger.run(setup['file'], None, None)
  File "C:\Users\Stone\.eclipse\org.eclipse.platform_4.3.0_1709980481_win32_win32_x86\plugins\org.python.pydev_2.8.2.2013090511\pysrc\pydevd.py", line 1092, in run
    pydev_imports.execfile(file, globals, locals) #execute the script
  File "C:\Users\Stone\Documents\FastDose\src\Beagle\Prove e test\test_renderpdf.py", line 9, in <module>
    drawing = svglib.svg2rlg("test.svg")
  File "C:\Python27\lib\site-packages\svglib\svglib.py", line 1178, in svg2rlg
    svgRenderer.render(svg)
  File "C:\Python27\lib\site-packages\svglib\svglib.py", line 511, in render
    self.render(child, self.mainGroup)
  File "C:\Python27\lib\site-packages\svglib\svglib.py", line 534, in render
    item = self.renderG(n)
  File "C:\Python27\lib\site-packages\svglib\svglib.py", line 626, in renderG
    item = self.render(child, parent=gr)
  File "C:\Python27\lib\site-packages\svglib\svglib.py", line 534, in render
    item = self.renderG(n)
  File "C:\Python27\lib\site-packages\svglib\svglib.py", line 626, in renderG
    item = self.render(child, parent=gr)
  File "C:\Python27\lib\site-packages\svglib\svglib.py", line 534, in render
    item = self.renderG(n)
  File "C:\Python27\lib\site-packages\svglib\svglib.py", line 626, in renderG
    item = self.render(child, parent=gr)
  File "C:\Python27\lib\site-packages\svglib\svglib.py", line 554, in render
    shape = getattr(self.shapeConverter, methodName)(n)
  File "C:\Python27\lib\site-packages\svglib\svglib.py", line 875, in convertPath
    normPath = normaliseSvgPath(d)
  File "C:\Python27\lib\site-packages\svglib\svglib.py", line 146, in normaliseSvgPath
    a = string.replace(a, 'e-', 'ee')
NameError: global name 'string' is not defined

此外,我想避免使用硬文件,而是使用StringIO创建一个临时的SVG/PDF文件,但我猜svg2rlg只接受路径作为输入。

错误的其余部分在哪里? - jonrsharpe
抱歉,您提供的文本为空。请提供需要翻译的内容。 - gerod
似乎有一个缺失的 import string 在某个地方。 - jonrsharpe
我简直无法想象为什么... - gerod
  1. 尝试联系svglib开发人员或自行修复代码并将其发送给他们,并创建一个pull请求。
  2. 这里有一个使用inkscape从svgs生成png的东西。您需要将文件扩展名从“.png”更改为“.pdf”以生成pdf。https://github.com/niccokunzmann/maglev-wiki-pictures/blob/master/svg2png.py#L51 只需安装inkscape,可能需要添加可执行文件的路径。
- User
1个回答

6
我需要手动编辑以下内容才能使其正常运行:
/Users/<MY_USER>/.virtualenvs/<MY_VENV>/lib/python2.7/site-packages/svglib/svglib.py

并添加这个缺失的

import string


2
是的,那个库已经过时了。 - David Dehghan
顺便提一下,最新的svglib已经修复了这个问题。 - Auberon Vacher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接