【问题标题】:Creating pdfs in Python with Pisa / xhtml2pdf使用 Pisa / xhtml2pdf 在 Python 中创建 pdf
【发布时间】:2011-12-09 00:09:39
【问题描述】:

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

【问题讨论】:

    标签: python pdf pisa xhtml2pdf


    【解决方案1】:

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

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

    【讨论】:

    • 更好的方法,因为 close() 文件很重要
    • 这就是为什么使用with 很棒;)
    【解决方案2】:

    我建议执行以下操作:

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

    【讨论】:

    • 奇怪的是,如果我尝试os.system("xhtml2pdf %s" % (filename)),它将从命令行运行,但不能从 Python 本身尝试,您认为这里的编码有什么问题?
    猜你喜欢
    • 2014-03-28
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多