Python-将PDF返回到浏览器

Python-将PDF返回到浏览器,python,wkhtmltopdf,Python,Wkhtmltopdf,我必须在“黑盒”设备上使用相当基本的Python 2.6(因此没有Django或非标准库) 我必须: 从浏览器向服务器上的Python脚本发送一组html 使用wkhtmltopdf进行一些处理并转换为pdf 将PDF返回到浏览器 我使用两个Python脚本——makePDF和getPDF 在makePDF结束时,我在服务器上有一个有效的/tmp/xxx.pdf文件-我可以通过SCP传输它,它在acrobat中打开时没有问题-没有问题(顺便说一句,它的大小应始终小于100k-2mb) 我的问题是

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

我必须:

  • 从浏览器向服务器上的Python脚本发送一组html
  • 使用wkhtmltopdf进行一些处理并转换为pdf
  • 将PDF返回到浏览器
  • 我使用两个Python脚本——makePDF和getPDF 在makePDF结束时,我在服务器上有一个有效的/tmp/xxx.pdf文件-我可以通过SCP传输它,它在acrobat中打开时没有问题-没有问题(顺便说一句,它的大小应始终小于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
    
    它看起来应该可以工作-如果我在dev tools中观看http对话,我可以看到返回了169k的内容长度,但它没有显示响应数据,如果使用我选择的武器“Advanced Rest Client”chrome extn,我会看到一个响应,其中包含看起来像犹太pdf文件的内容:

    %PDF-1.4
    1 0 obj
    <<
    /Title (��Briefing Pack)
    /Creator (��)
    /Producer (��wkhtmltopdf)
    /CreationDate (D:20131101095256+10'30')
    >>
    ... etc
    
    %PDF-1.4
    10 obj
    >
    ... 等
    
    浏览器显示“加载PDF文档失败”错误


    我认为很明显,我是一个偶尔使用Python的用户,而不是一个普通用户,因此我怀疑我缺少了一些非常基本的东西…

    在应用程序后添加“\n”对我有用/pdf:

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

    在应用程序/pdf后添加“\n”后,它对我有效:

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

    另外,如果您在python代码中创建xxx.pdf文件,它可能会有owner:group www data:www data。具有读取权限。否则apache将无法读取它。哦,看在$$%%%$$$%的份上!!!:)谢谢这一定是有史以来最容易的堆栈溢出点!是的,添加\n使其工作perfectly@PerryW:是的,在HTTP中,标题与正文之间用一个空行分隔,因此您将整个PDF作为一组格式不正确的标题发送,然后没有正文…它不会在浏览器中为我显示内容。你能为我还原完整的代码吗?请在firefox浏览器中显示pd、png、jpg文件的pdf内容。我已经尝试了几个cgi脚本,但它们不将图像或pdf作为o/p进行渲染。另外,如果您在python代码中创建xxx.pdf文件,它可能有owner:group www data:www data。具有读取权限。否则apache将无法读取它。哦,看在$$%%%$$$%的份上!!!:)谢谢这一定是有史以来最容易的堆栈溢出点!是的,添加\n使其工作perfectly@PerryW:是的,在HTTP中,标题与正文之间用一个空行分隔,因此您将整个PDF作为一组格式不正确的标题发送,然后没有正文…它不会在浏览器中为我显示内容。你能为我还原完整的代码吗?请在firefox浏览器中显示pd、png、jpg文件的pdf内容。我已经尝试了几个cgi脚本,但它们不将图像或pdf作为o/p进行渲染。先谢谢你