Domanda

"IOError: decoder zip not available" I get such error when i try to render pdf with image. I search answer how to fix it, but i found decision only for linux(but i use windows). How it can br fixed?

Here some python code:

  result = StringIO()            
            pdf = pisa.pisaDocument(StringIO(html.encode("UTF-8")), result, encoding="utf-8")
            filename = '%s_%s.pdf' % (name.capitalize(), datetime.datetime.now().strftime('%d-%m-%Y'))
            return Response(result.getvalue(), content_type='application/pdf',content_disposition='attachment; filename="%s"' % filename)

And i try to render base64, here code from mako:

<div><img src="data:image/png;base64,${img['actions'][0]['data']}"></div>

Full traceback:

    URL: http://localhost:5000/en/case/report/84f3f17c-4cb3-4269-a369-910ddbba1ba4/pdf
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\weberror-0.10.3-py2.7.egg\\weberror\\evalexception.py', line 431 in respond
      app_iter = self.application(environ, detect_start_response)
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\pyramid-1.2.1-py2.7.egg\\pyramid\\router.py', line 176 in __call__
      response = self.handle_request(request)
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\pyramid-1.2.1-py2.7.egg\\pyramid\\tweens.py', line 17 in excview_tween
      response = handler(request)
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\pyramid_tm-0.5-py2.7.egg\\pyramid_tm\\__init__.py', line 100 in tm_tween
      response = handler(request)
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\pyramid-1.2.1-py2.7.egg\\pyramid\\router.py', line 153 in handle_request
      response = view_callable(context, request)
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\pyramid-1.2.1-py2.7.egg\\pyramid\\config\\views.py', line 186 in _secured_view
      return view(context, request)
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\fidesysonline\\handlers\\__init__.py', line 32 in decorated_view
      response = view(context, request)
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\pyramid-1.2.1-py2.7.egg\\pyramid\\config\\views.py', line 319 in viewresult_to_response
      result = view(context, request)
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\pyramid-1.2.1-py2.7.egg\\pyramid\\config\\views.py', line 378 in _class_requestonly_view
      response = getattr(inst, attr)()
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\fidesysonline\\handlers\\case.py', line 530 in report
      pdf = pisa.pisaDocument(StringIO(html.encode("UTF-8")), result, encoding="utf-8")
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\xhtml2pdf-0.0.4-py2.7.egg\\xhtml2pdf\\document.py', line 127 in pisaDocument
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\reportlab-2.5-py2.7-win-amd64.egg\\reportlab\\platypus\\doctemplate.py', line 880 in build
      self.handle_flowable(flowables)
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\reportlab-2.5-py2.7-win-amd64.egg\\reportlab\\platypus\\doctemplate.py', line 763 in handle_flowable
      if frame.add(f, canv, trySplit=self.allowSplitting):
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\reportlab-2.5-py2.7-win-amd64.egg\\reportlab\\platypus\\frames.py', line 174 in _add
      flowable.drawOn(canv, self._x + self._leftExtraIndent, y, _sW=aW-w)
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\reportlab-2.5-py2.7-win-amd64.egg\\reportlab\\platypus\\flowables.py', line 108 in drawOn
      self._drawOn(canvas)
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\reportlab-2.5-py2.7-win-amd64.egg\\reportlab\\platypus\\flowables.py', line 89 in _drawOn
      self.draw()#this is the bit you overload
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\xhtml2pdf-0.0.4-py2.7.egg\\xhtml2pdf\\xhtml2pdf_reportlab.py', line 677 in draw
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\xhtml2pdf-0.0.4-py2.7.egg\\xhtml2pdf\\reportlab_paragraph.py', line 1064 in draw
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\xhtml2pdf-0.0.4-py2.7.egg\\xhtml2pdf\\reportlab_paragraph.py', line 1544 in drawPara
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\xhtml2pdf-0.0.4-py2.7.egg\\xhtml2pdf\\reportlab_paragraph.py', line 347 in _leftDrawParaLineX
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\xhtml2pdf-0.0.4-py2.7.egg\\xhtml2pdf\\reportlab_paragraph.py', line 214 in _putFragLine
    File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\reportlab-2.5-py2.7-win-amd64.egg\\reportlab\\pdfgen\\canvas.py', line 857 in drawImage
      imgObj = pdfdoc.PDFImageXObject(na

me, image, mask=mask)
File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\reportlab-2.5-py2.7-win-amd64.egg\\reportlab\\pdfbase\\pdfdoc.py', line 2086 in __init__
  self.loadImageFromSRC(source)   #it is already a PIL Image
File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\reportlab-2.5-py2.7-win-amd64.egg\\reportlab\\pdfbase\\pdfdoc.py', line 2173 in loadImageFromSRC
  raw = im.getRGBData()
File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\xhtml2pdf-0.0.4-py2.7.egg\\xhtml2pdf\\xhtml2pdf_reportlab.py', line 430 in getRGBData
File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\pil-1.1.7-py2.7-win-amd64.egg\\Image.py', line 532 in tostring
  self.load()
File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\pil-1.1.7-py2.7-win-amd64.egg\\ImageFile.py', line 189 in load
  d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
File 'B:\\Khakhulin\\Fidesys\\Interface\\Pylons\\FidesysOnline\\~fo\\lib\\site-packages\\pil-1.1.7-py2.7-win-amd64.egg\\Image.py', line 385 in _getdecoder
  raise IOError("decoder %s not available" % decoder_name)
IOError: decoder zip not available
È stato utile?

Soluzione

It looks like you have a PIL build without zip support Here's an answer containing a link to alternative PIL builds for Windows give those a try.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top