ReportLab AssertionError: path must start with a moveto or rect

ReportLab AssertionError: path must start with a moveto or rect

我尝试使用 Python 3.6 和当前的 reportlab 和 svg2rlg 库(截至这篇文章),但我在标题中遇到了错误。:

from reportlab.graphics import renderPDF
from svglib.svglib import svg2rlg

c = Canvas(path+'To Print.pdf')
img27 = svg2rlg(path_to_.svg')
wd27 = img27.width/inch
ht27 = img27.height/inch
renderPDF.draw(img27, c, x=x27, y=y27)

它通常工作得很好,我不知道如何解决它。 我已尝试搜索此错误,但无法在任何地方找到它。

这是完整的回溯:

File "/anaconda3/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "/anaconda3/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "/Users/Drive/Scripts/PDF.py", line 604, in <module>
    renderPDF.draw(img27, c, x=x27, y=y27)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderPDF.py", line 29, in draw
    R.draw(renderScaledDrawing(drawing), canvas, x, y, showBoundary=showBoundary)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 201, in draw
    self.drawNode(drawing)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderPDF.py", line 54, in drawNode
    self.drawNodeDispatcher(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 282, in drawNodeDispatcher
    self.drawGroup(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 311, in drawGroup
    self.drawNode(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderPDF.py", line 54, in drawNode
    self.drawNodeDispatcher(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 282, in drawNodeDispatcher
    self.drawGroup(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 311, in drawGroup
    self.drawNode(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderPDF.py", line 54, in drawNode
    self.drawNodeDispatcher(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 282, in drawNodeDispatcher
    self.drawGroup(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 311, in drawGroup
    self.drawNode(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderPDF.py", line 54, in drawNode
    self.drawNodeDispatcher(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 282, in drawNodeDispatcher
    self.drawGroup(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 311, in drawGroup
    self.drawNode(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderPDF.py", line 54, in drawNode
    self.drawNodeDispatcher(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 282, in drawNodeDispatcher
    self.drawGroup(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 311, in drawGroup
    self.drawNode(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderPDF.py", line 54, in drawNode
    self.drawNodeDispatcher(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 282, in drawNodeDispatcher
    self.drawGroup(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 311, in drawGroup
    self.drawNode(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderPDF.py", line 54, in drawNode
    self.drawNodeDispatcher(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderbase.py", line 278, in drawNodeDispatcher
    self.drawPath(node)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/renderPDF.py", line 183, in drawPath
    isClosed = _renderPath(path, drawFuncs, forceClose=fill and autoclose=='pdf')

  File "/anaconda3/lib/python3.6/site-packages/svglib/svglib.py", line 1075, in patchedRenderPath
    return original_renderPath(path, drawFuncs, **kwargs)

  File "/anaconda3/lib/python3.6/site-packages/reportlab/graphics/shapes.py", line 996, in _renderPath
    drawFuncs[op](*points[i:j])

  File "/anaconda3/lib/python3.6/site-packages/reportlab/pdfgen/pathobject.py", line 127, in close
    self._code_append('h')

  File "/anaconda3/lib/python3.6/site-packages/reportlab/pdfgen/pathobject.py", line 36, in _init_code_append
    assert c.endswith(' m') or c.endswith(' re'), 'path must start with a moveto or rect'

AssertionError: path must start with a moveto or rect

最后的断言好像过分了

File "/anaconda3/lib/python3.6/site-packages/reportlab/pdfgen/pathobject.py", line 36, in _init_code_append
    assert c.endswith(' m') or c.endswith(' re'), 'path must start with a moveto or rect'

此位置 c 的实际值为 "h"(由堆栈跟踪中上方的调用填写)。如果你只是注释掉断言它工作正常。

也请让 ReportLab 的好心人知道,以便他们将来可以修复。