Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 5, 2011 16:00:30

Panter7777
От:
Зарегистрирован: 2011-02-16
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Генерация html to pdf (pisa)

Всем добрый день!

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

Я делаю:

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. В чем беда не пойму, пожалуйста хелп.



Офлайн

#2 Сен. 6, 2011 09:49:24

Panter7777
От:
Зарегистрирован: 2011-02-16
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Генерация html to pdf (pisa)

В общем методом мук и ошибок, я нашел новые ошибки.
Может кто-то поможет расшифровать трейсбэки:

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'



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version