ReportLab AssertionError:路径必须以m开头

2024-09-29 19:20:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python3.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

Tags: inpyselfnodelibpackageslinesite
1条回答
网友
1楼 · 发布于 2024-09-29 19:20:35

最后的断言似乎过于热心了。你知道吗

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的好人知道,以便他们将来可以修复。你知道吗

相关问题 更多 >

    热门问题