2013/09/22

reportlabで、line.lineBreakがアトリビュートエラー

Ubuntu-12.04上のrst2pdfで、"wordWrap":"CJK"を指定してPDFを作成していたら、reportlabでエラーが。。。

  File "/usr/lib/python2.7/dist-packages/reportlab/platypus/paragraph.py", line 335, in _justifyDrawParaLineX
    simple = last or abs(extraSpace)<=1e-8 or line.lineBreak
AttributeError: FragLine instance has no attribute 'lineBreak'
あちこちさまよって情報を集めてみたのだけど、reportlabの問題らしく、最新版はパッチがあたっているとのこと。

Ubuntu-12.04にはバックポートされないようなので、自力で調整しました。

paragraph.pyの335行目を次のように調整して、エラーが出ないように。。。

    if hasattr( line, 'lineBreak' ):
        simple = last or abs(extraSpace)<=1e-8 or line.lineBreak
    else:
        simple = last or abs(extraSpace)<=1e-8
最新のパッチの内容は確認していないけど、とにかくエラーの抑止を最優先しました。
とりあえずPDFは生成されるようになったので、大きな問題でも出なければ、しばらくこのままで使います。