Найти - Пользователи
Полная версия: Подскажите модули генерации PDF из HTML
Начало » Python для новичков » Подскажите модули генерации PDF из HTML
1
Panter7777
Добрый день.
Может кто-то работал или сталкивался.
Задача такая: на основе “длинной” странички HTML сгенерировать PDF разбитый на много страниц.
и что б модуль работал с css.

За ранее спасибо.
svas
http://www.xhtml2pdf.com/
Panter7777
Да этот пробовал, но что-то не могу нормально с ним подружиться.
Только что попробовал http://pdfcrowd.com/html-to-pdf-api/ - Отлично работает, супер не одной проблемы, но платный.
Panter7777
Вот что pisa пишет:

tail: /svn/twisted/adminka/pisa_error.log: файл усечен
Document error
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.7/sx/pisa3/pisa_document.py", line 161, in pisaDocument
doc.build(c.story)
File "/usr/lib/python2.7/dist-packages/reportlab/platypus/doctemplate.py", line 880, in build
self.handle_flowable(flowables)
File "/usr/lib/python2.7/dist-packages/reportlab/platypus/doctemplate.py", line 763, in handle_flowable
if frame.add(f, canv, trySplit=self.allowSplitting):
File "/usr/lib/python2.7/dist-packages/reportlab/platypus/frames.py", line 159, in _add
w, h = flowable.wrap(aW, h)
File "/usr/lib/pymodules/python2.7/sx/pisa3/pisa_reportlab.py", line 688, in wrap
return Table.wrap(self, availWidth, availHeight)
File "/usr/lib/python2.7/dist-packages/reportlab/platypus/tables.py", line 1113, in wrap
self._calc(availWidth, availHeight)
File "/usr/lib/python2.7/dist-packages/reportlab/platypus/tables.py", line 587, in _calc
self._calc_height(availHeight,availWidth,W=W)
File "/usr/lib/python2.7/dist-packages/reportlab/platypus/tables.py", line 553, in _calc_height
spanFixDim(H0,H,spanCons,lim=hmax)
File "/usr/lib/python2.7/dist-packages/reportlab/platypus/tables.py", line 205, in spanFixDim
t = sum([V[x]+M.get(x,0) for x in xrange(x0,x1)])
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
Если кому то это что-то скажет, то вот что на 205 строчке:
def spanFixDim(V0,V,spanCons,lim=None,FUZZ=rl_config._FUZZ):
#assign required space to variable rows equally to existing calculated values
M = {}
if not lim: lim = len(V0) #in longtables the row calcs may be truncated
for (x0,x1),v in spanCons.iteritems():
if x0>=lim: continue
x1 += 1
t = sum([V[x]+M.get(x,0) for x in xrange(x0,x1)])
if t>=v-FUZZ: continue #already good enough
X = [x for x in xrange(x0,x1) if V0[x] is None] #variable candidates
if not X: continue #something wrong here mate
v -= t
v /= float(len(X))
for x in X:
M[x] = M.get(x,0)+v
for x,v in M.iteritems():
V[x] += v
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