使用Pisa / xhtml2pdf在Python中创建pdf

时间:2011-12-09 00:09:39

标签: python pdf pisa xhtml2pdf

我知道有很多基于Python创建pdf的问题,但我还没有看到任何基于使用Pisa或xhtml2pdf创建pdf的内容。

这是我的代码。

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

然后

pisa.startViewer('mypdf.pdf')

我在几个不同的教程和示例中汇总了这一点,但我尝试过的每件事都会导致pdf被破坏,我在尝试打开pdf时会收到此消息。

" Adob​​e Reader无法打开' awesomer.pdf'因为它不是受支持的文件类型,或者因为文件已损坏(例如,它是作为电子邮件附件发送的,并且没有被正确解码)。"

即使我没有在字符串上使用.encode(' utf-8'),也会出现此消息。

我做错了什么?我的Mac上的编码是否与此有关?

2 个答案:

答案 0 :(得分:5)

我建议手动关闭文件,遇到类似的问题。试试这个:

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

答案 1 :(得分:1)

我建议您执行以下操作:

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编码