从svg转换为pdf
我正在尝试用以下代码把一个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似乎只接受文件路径作为输入。
1 个回答
6
为了让它正常工作,我手动编辑了:
/Users/<MY_USER>/.virtualenvs/<MY_VENV>/lib/python2.7/site-packages/svglib/svglib.py
并且添加了这个缺失的部分:
import string