TypeError:'NotImplementedType'对象在python中不可迭代

时间:2014-08-08 07:58:19

标签: python xhtml2pdf

我正在尝试使用xhtml2pdf从html页面创建一个pdf ..在转换它时,我的终端显示以下错误消息..

错误TypeError:' NotImplementedType'对象不可迭代意味着什么?

我该如何防止这种情况?以下示例代码是使用....转换pdf

 <html>
<head>
<style type="text/css">
   @page 
    {
     @top-right 
     {
      content: "Page " counter(page);
     }
    }
</style>
</head>
<body>
test
</body>
</html>

并使用以下命令行进行pdf转换..

xhtml2pdf test.html test.pdf

在那次转换中,我早早就说错了。我该怎么办?

1 个答案:

答案 0 :(得分:0)

这看起来是xhtml2pdf中的一个错误。

运行命令行时得到的回溯如下:

Traceback (most recent call last):
  File "C:\Python27\Scripts\xhtml2pdf-script.py", line 9, in <module>
    load_entry_point('xhtml2pdf==0.0.6', 'console_scripts', 'xhtml2pdf')()
  File "build\bdist.win32\egg\xhtml2pdf\pisa.py", line 146, in command
  File "build\bdist.win32\egg\xhtml2pdf\pisa.py", line 363, in execute
  File "build\bdist.win32\egg\xhtml2pdf\document.py", line 89, in pisaDocument
  File "build\bdist.win32\egg\xhtml2pdf\document.py", line 57, in pisaStory
  File "build\bdist.win32\egg\xhtml2pdf\parser.py", line 685, in pisaParser
  File "build\bdist.win32\egg\xhtml2pdf\context.py", line 498, in parseCSS
  File "build\bdist.win32\egg\xhtml2pdf\w3c\cssParser.py", line 434, in parse
  File "build\bdist.win32\egg\xhtml2pdf\w3c\cssParser.py", line 533, in _parseStylesheet
  File "build\bdist.win32\egg\xhtml2pdf\w3c\cssParser.py", line 654, in _parseAtKeyword
  File "build\bdist.win32\egg\xhtml2pdf\w3c\cssParser.py", line 758, in _parseAtPage
TypeError: 'NotImplementedType' object is not iterable

稍微深入研究一下代码,问题似乎就在这里,w3c/cssParser.py

        if src.startswith('@'):
            # @media, @page, @font-face
            src, atResults = self._parseAtKeyword(src)
            if atResults is not None:
                stylesheetElements.extend(atResults)   # this is line 758

_parseAtKeyword(src)会返回一个包含srcNotImplemented的2元组,用于任何无法识别的CSS关键字,尤其是@top-right。这会导致以下行中的extend失败,因为NotImplemented不是extend的有效参数。

@top-right我不熟悉,我找不到css @top-right的任何Google搜索结果。如果我将@top-right替换为@topright,我会得到相同的行为,如果我将@top-right替换为top-right,则代码似乎会进入无限循环。所以我对xhtml2pdf的CSS解析器并没有特别深刻的印象。

替换第757行
            if atResults is not None and atResults is not NotImplemented:

似乎让xhtml2pdf足以将您的测试文档转换为PDF。但是,它产生的输出可能不是您所希望的。

我怀疑在这里做的最好的事情就是发布在xhtml2pdf mailing list