Создание PDF-файлов в Python с помощью Pisa / xhtml2pdf - PullRequest
2 голосов
/ 09 декабря 2011

Я знаю, что есть много вопросов, связанных с созданием PDF в Python, но я не видел ничего, основанного на создании PDF с помощью Pisa или xhtml2pdf.

Вот мой код.

pisa.pisaDocument(cStringIO.StringIO(a).encode('utf-8'),file('mypdf.pdf','wb'))

, а затем

pisa.startViewer('mypdf.pdf')

Я собрал это на нескольких разных уроках и примерах, но все, что я пробовал, всегда приводит к повреждению PDF, и я получаю это сообщение при попытке открыть PDF.

«Adobe Reader не может открыть файл« awesomer.pdf », так как он не является поддерживаемым типом файла или файл поврежден (например, он был отправлен как вложение электронной почты и неправильно декодирован)».

Это сообщение появляется, даже если я не использую .encode ('utf-8') в строке.

Что я делаю не так? Связана ли кодировка на моем Mac с этим?

Ответы [ 2 ]

5 голосов
/ 05 января 2012

Я бы посоветовал закрыть файл вручную, возникла схожая проблема. Попробуйте это:

f = file('mypdf.pdf', 'wb')
pisa.pisaDocument(cStringIO.StringIO(a).encode('utf-8'),f)
f.close()
1 голос
/ 09 декабря 2011

Я рекомендую сделать следующее:

pdf = pisa.pisaDocument(cStringIO.StringIO(a).encode('utf-8'),file('mypdf.pdf','wb'))
if pdf.err:
     print "*** %d ERRORS OCCURED" % pdf.err 

А затем посмотреть, что выводит ошибка.

Я не уверен, какую строку вы кодируете, но это также может помочь:

pdf = pisa.pisaDocument(cStringIO.StringIO(html.encode(a)).encode('utf-8'),file('mypdf.pdf','wb'))

Это зависит от того, нужно ли a кодировать html

...