使用Pisa/xhtml2pdf在Python中创建PDF
我知道关于在Python中创建PDF的问题很多,但我还没看到有人讨论用Pisa或xhtml2pdf来创建PDF的。
这是我的代码。
pisa.pisaDocument(cStringIO.StringIO(a).encode('utf-8'),file('mypdf.pdf','wb'))
然后
pisa.startViewer('mypdf.pdf')
我是根据几个不同的教程和示例拼凑出来的,但我尝试的每一个方法,最后生成的PDF文件总是损坏,打开时总是出现这个提示。
“Adobe Reader无法打开'awesomer.pdf',因为它不是支持的文件类型,或者文件已经损坏(例如,它作为电子邮件附件发送时没有正确解码)。”
即使我没有在字符串上使用.encode('utf-8'),这个提示也会出现。
我到底哪里出错了?我在Mac上的编码设置会影响这个吗?
2 个回答
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编码。
5
我建议你手动关闭文件,我之前也遇到过类似的问题。试试这个:
f = file('mypdf.pdf', 'wb')
pisa.pisaDocument(cStringIO.StringIO(a).encode('utf-8'),f)
f.close()