Случайный '>' не поддерживается между экземплярами 'NoneType' и 'float' в xhtml2pdf

Я использую xhtml2pdf в приложении Django для генерации PDF-файлов из html-вывода Pandas. У меня есть эта ошибка, которая возникает случайным образом (не во всех случаях):

Traceback (most recent call last):
  File "C:\Python37\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Python37\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Python37\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "C:\Python37\lib\site-packages\django\views\generic\base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Python37\lib\site-packages\rest_framework\views.py", line 509, in dispatch
    response = self.handle_exception(exc)
  File "C:\Python37\lib\site-packages\rest_framework\views.py", line 469, in handle_exception
    self.raise_uncaught_exception(exc)
  File "C:\Python37\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
    raise exc
  File "C:\Python37\lib\site-packages\rest_framework\views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
  File "D:\DEV\webdeploy\django_proj\django_app\views.py", line 171, in post
    return  pdfDownload(dppivot, request)
  File "D:\DEV\webdeploy\django_proj\django_app\views.py", line 310, in pdfDownload
    pdf = pisa.pisaDocument(BytesIO(html_styled.encode("ISO-8859-1")), result)
  File "C:\Python37\lib\site-packages\xhtml2pdf\document.py", line 144, in pisaDocument
    doc.build(context.story)
  File "C:\Python37\lib\site-packages\reportlab\platypus\doctemplate.py", line 1079, in build
    self.handle_flowable(flowables)
  File "C:\Python37\lib\site-packages\reportlab\platypus\doctemplate.py", line 955, in handle_flowable
    (self._fIdent(f,60,frame),_fSizeString(f),self.page, self.frame.id,
  File "C:\Python37\lib\site-packages\reportlab\platypus\doctemplate.py", line 890, in _fIdent
    return f.identity(maxLen)
  File "C:\Python37\lib\site-packages\reportlab\platypus\tables.py", line 421, in identity
    tallest = '(tallest row %d)' % int(max(rh))

Exception Type: TypeError at /iw/dataload/
Exception Value: '>' not supported between instances of 'NoneType' and 'float'

Вот мой код :

from rest_framework.views import APIView
import pandas as pd
from xhtml2pdf import pisa
from _io import BytesIO

def pdfDownload(dppivot, request):  
    html_string = '''
    <html>
      <head><title>Report</title>
        <style>
     @page {{
     size: A4 landscape;
     margin: 1cm;
     }}
     
     body{{font-size:9px;font-family: "Roboto","Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif;
    color: #333;}}
    
 
         
     </style>
      </head>
 
     <body>
        <h1>1) Par Flux par produit</h1>
        {table}
        <br/>
 
      </body>
    </html>
    '''
    result = BytesIO()
    html = dppivot.to_html()
    html_styled = html_string.format(table=html)
 
    pdf = pisa.pisaDocument(BytesIO(html_styled.encode("ISO-8859-1")), result)
    if not pdf.err:
         response = HttpResponse(result.getvalue(), content_type='application/pdf')
         response['Content-Disposition'] = 'attachment; filename="report_{}.pdf"'\
                                                   .format(date.today())
         return response

    return None


class DataLoad(APIView):
      def post(self, request):
          pivot= pd.pivot_table(data)
          return  pdfDownload(pivot, request)

Похоже, ошибка возникает в библиотеке ReportLab, где она пытается получить максимальную высоту столбцов из html-таблицы. Похоже, что это не связано с версией Python, однако ошибка появляется только на Windows с Python 3.7.7. но не на Debian/ Python3.7.3.

Вернуться на верх