2

我知道有很多基于 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 上的编码是否与此有关?

4

2 回答 2

5

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

f = file('mypdf.pdf', 'wb')
pisa.pisaDocument(cStringIO.StringIO(a).encode('utf-8'),f)
f.close()
于 2012-01-05T07:03:30.797 回答
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 编码

于 2011-12-09T00:45:04.493 回答