Найти - Пользователи
Полная версия: Генерация html to pdf (pisa)
Начало » Python для новичков » Генерация html to pdf (pisa)
1
Panter7777
Всем добрый день!

Знаю заезженная тема, но везде только какие-то обрывки. Так что б по делу для новичков так и не нашел.

Я делаю:
import cStringIO as StringIO
import sx.pisa3 as pisa
import logging



h = logging.FileHandler('pisa_error.log','w')
pisa.log.addHandler(h)

tpl.parse("BODY", "BODY") // это мой парс в html
body = tpl.get_var("BODY")

result = StringIO.StringIO()

pdf = pisa.CreatePDF(body.decode("cp1251").encode("utf-8"), result) / html в кодировке charset=windows-1251"
pisa.log.removeHandler(h)

page.request.setHeader("content-type", "application/pdf")

if not pdf.err:
returnValue(result.getvalue())
else:
raise Exception, "Can't convert html -> pdf"
на выходе предлагает сохранить типо pdf! документ но он без расширения “.pdf” , он просто называется как сама страница. открыть можно любым html редактором но не pdf прогой (даже если дописать расширение вручную). Открываю блокнотом, а там весь html код!!! Как бы и не было генерации в pdf. В чем беда не пойму, пожалуйста хелп.
Panter7777
В общем методом мук и ошибок, я нашел новые ошибки.
Может кто-то поможет расшифровать трейсбэки:
Sep  6 09:40:45 panter adminka: [-] #011  File "/usr/lib/pymodules/python2.7/sx/pisa3/pisa_document.py", line 161, in pisaDocument
Sep 6 09:40:45 panter adminka: [-] #011 doc.build(c.story)
Sep 6 09:40:45 panter adminka: [-] #011 File "/usr/lib/python2.7/dist-packages/reportlab/platypus/doctemplate.py", line 880, in build
Sep 6 09:40:45 panter adminka: [-] #011 self.handle_flowable(flowables)
Sep 6 09:40:45 panter adminka: [-] #011 File "/usr/lib/python2.7/dist-packages/reportlab/platypus/doctemplate.py", line 763, in handle_flowable
Sep 6 09:40:45 panter adminka: [-] #011 if frame.add(f, canv, trySplit=self.allowSplitting):
Sep 6 09:40:45 panter adminka: [-] #011 File "/usr/lib/python2.7/dist-packages/reportlab/platypus/frames.py", line 159, in _add
Sep 6 09:40:45 panter adminka: [-] #011 w, h = flowable.wrap(aW, h)
Sep 6 09:40:45 panter adminka: [-] #011 File "/usr/lib/pymodules/python2.7/sx/pisa3/pisa_reportlab.py", line 688, in wrap
Sep 6 09:40:45 panter adminka: [-] #011 return Table.wrap(self, availWidth, availHeight)
Sep 6 09:40:45 panter adminka: [-] #011 File "/usr/lib/python2.7/dist-packages/reportlab/platypus/tables.py", line 1113, in wrap
Sep 6 09:40:45 panter adminka: [-] #011 self._calc(availWidth, availHeight)
Sep 6 09:40:45 panter adminka: [-] #011 File "/usr/lib/python2.7/dist-packages/reportlab/platypus/tables.py", line 587, in _calc
Sep 6 09:40:45 panter adminka: [-] #011 self._calc_height(availHeight,availWidth,W=W)
Sep 6 09:40:45 panter adminka: [-] #011 File "/usr/lib/python2.7/dist-packages/reportlab/platypus/tables.py", line 553, in _calc_height
Sep 6 09:40:45 panter adminka: [-] #011 spanFixDim(H0,H,spanCons,lim=hmax)
Sep 6 09:40:45 panter adminka: [-] #011 File "/usr/lib/python2.7/dist-packages/reportlab/platypus/tables.py", line 205, in spanFixDim
Sep 6 09:40:45 panter adminka: [-] #011 t = sum([V[x]+M.get(x,0) for x in xrange(x0,x1)])
Sep 6 09:40:45 panter adminka: [-] #011exceptions.TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB