使用Reportlab Canvas-如何创建一个选项来打印从浏览器本身生成的pdf?

Rag*_*hav 2 python pdf reportlab http-headers

这是使用Reportlab为我生成pdf的代码.

现在,它只是在浏览器中显示pdf,并且在resonse.header ['Content-Disposition']中包含'attachment'后,它会下载pdf.

但我想要的是浏览器中的rint选项,它甚至允许您选择打印机.可能吗 ?

       data = "raghav"
       p = canvas.Canvas(self.response.out)
        p.drawString(50, 700, data)


        p.showPage()

        self.response.headers['Content-Type'] = 'application/pdf'
        self.response.headers['Content-Disposition'] = 'attachment;filename=testpdf.pdf'
        p.save()
Run Code Online (Sandbox Code Playgroud)

fur*_*ins 5

根据http://blog.adlibre.org/2012/04/05/automatically-print-pdf-generated-reportlab/,您可以添加这两行以获得所需的结果:

from reportlab.pdfbase import pdfdoc
pdfdoc.PDFCatalog.OpenAction = '<</S/JavaScript/JS(this.print\({bUI:true,bSilent:false,bShrinkToFit:true}\);)>>'
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你 :)

  • 至少在开发服务器上,这会影响所有未来的PDF.如果您希望此特定PDF具有打开操作,请在_doc.Catalog.OpenAction私有属性上设置OpenAction.请记住,这是在干涉内部坚持 (2认同)