Python - 将PDF返回给浏览器

时间:2013-11-01 00:46:40

标签: python wkhtmltopdf

我必须在“黑盒子”设备上使用相当基本的Python 2.6(所以没有Django或非标准库)。

我必须:

  1. 将一堆html从浏览器发送到服务器上的Python脚本
  2. 使用wkhtmltopdf进行一些处理并转换为pdf
  3. 将PDF返回浏览器
  4. 我使用两个Python脚本 - makePDF和getPDF 在makePDF结束时,我有一个有效的/tmp/xxx.pdf坐在服务器上 - 我可以通过SCP转移它,它在杂技演员打开没有问题 - 没有问题(它应该总是低于100k - 2mb大小顺便说一句)

    我的问题是将文件发送回浏览器

    这是getPDF

    #!/usr/bin/python
    from tempfile import *
    tempfile=gettempdir()+"/xxx.pdf"
    f = open(tempfile, 'r')
    pdf = f.read()
    f.close()
    print 'Content-Type: application/pdf'
    print pdf
    

    看起来它应该正常工作 - 如果我在开发工具中看到http对话,我可以看到返回了169k的内容长度,但它没有显示响应数据,如果使用我选择的武器,'Advanced Rest Client 'chrome extn我看到一个包含看似kosher pdf文件的响应:

    %PDF-1.4
    1 0 obj
    <<
    /Title (��Briefing Pack)
    /Creator (��)
    /Producer (��wkhtmltopdf)
    /CreationDate (D:20131101095256+10'30')
    >>
    ... etc
    

    浏览器显示“无法加载PDF文档”错误

    我认为很明显我是一个偶尔的Python用户而不是常规用户,所以我怀疑我错过了一些相当基本的东西......

1 个答案:

答案 0 :(得分:5)

在申请/ pdf之后添加'\ n'后,它对我有用:

print "Content-type: application/pdf\n"
print pdf