我知道有很多基于Python创建pdf的问题,但我还没有看到任何基于使用Pisa或xhtml2pdf创建pdf的内容。
这是我的代码。
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上的编码是否与此有关?
答案 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编码