Python 从svg到pdf的转换

Python 从svg到pdf的转换,python,pdf,svg,Python,Pdf,Svg,我试图用以下代码将svg文件转换为pdf,但出现了一个错误 src: 错误: 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

我试图用以下代码将svg文件转换为pdf,但出现了一个错误

src:

错误:

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
pydev调试器:正在启动
回溯(最近一次呼叫最后一次):
文件“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”,第1446行,in
运行(安装程序['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”,第1092行,正在运行
pydev_imports.execfile(文件、全局、局部)#执行脚本
文件“C:\Users\Stone\Documents\FastDose\src\Beagle\Prove e test\test\u renderpdf.py”,第9行,在
drawing=svglib.svg2rlg(“test.svg”)
svg2rlg中的文件“C:\Python27\lib\site packages\svglib\svglib.py”,第1178行
svgrender.render(svg)
文件“C:\Python27\lib\site packages\svglib\svglib.py”,第511行,在渲染中
self.render(子级,self.main组)
文件“C:\Python27\lib\site packages\svglib\svglib.py”,第534行,在render中
item=self.renderG(n)
renderG中的文件“C:\Python27\lib\site packages\svglib\svglib.py”,第626行
item=self.render(子级,父级=gr)
文件“C:\Python27\lib\site packages\svglib\svglib.py”,第534行,在render中
item=self.renderG(n)
renderG中的文件“C:\Python27\lib\site packages\svglib\svglib.py”,第626行
item=self.render(子级,父级=gr)
文件“C:\Python27\lib\site packages\svglib\svglib.py”,第534行,在render中
item=self.renderG(n)
renderG中的文件“C:\Python27\lib\site packages\svglib\svglib.py”,第626行
item=self.render(子级,父级=gr)
文件“C:\Python27\lib\site packages\svglib\svglib.py”,第554行,在render中
shape=getattr(self.shapeConverter,methodName)(n)
文件“C:\Python27\lib\site packages\svglib\svglib.py”,第875行,在convertPath中
normPath=normaliseSvgPath(d)
文件“C:\Python27\lib\site packages\svglib\svglib.py”,第146行,在normaliseSvgPath中
a=string.replace(a,'e-','ee')
NameError:未定义全局名称“字符串”

此外,我希望避免硬文件,并使用StringIO创建一个临时svg/pdf文件,但我猜svg2rlg只接受一个路径作为输入。

要让它正常工作,需要手动编辑:

/Users/<MY_USER>/.virtualenvs/<MY_VENV>/lib/python2.7/site-packages/svglib/svglib.py
/Users//.virtualenvs//lib/python2.7/site-packages/svglib/svglib.py
加上这个


导入字符串

错误的其余部分在哪里?很抱歉,剪切和粘贴错误…似乎有一个缺少的
导入字符串
我无法想象为什么…1。尝试联系svglib开发人员,或者自己修复代码并将其发送给他们,然后创建一个pull请求。2.下面是用于从SVG生成PNG的内容。您需要将以“.png”结尾的文件更改为“.pdf”,以便生成pdf。只需安装inkscape,也许您需要将路径添加到可执行文件。是的。顺便说一下,这个库很旧,最新的修复方法
/Users/<MY_USER>/.virtualenvs/<MY_VENV>/lib/python2.7/site-packages/svglib/svglib.py