use*_*848 5 python django reportlab
使用reportlab,我如何生成一系列qr代码并将它们放在一个pdf中,然后在用户浏览器上打开它.这是我的尝试.提前致谢.对于下面的代码,没有任何反应.我原本希望提示保存pdf文件.
from reportlab.pdfgen import canvas
from django.http import HttpResponse
from reportlab.graphics.shapes import Drawing
from reportlab.graphics.barcode.qr import QrCodeWidget
from reportlab.graphics import renderPDF
# Create the HttpResponse object with the appropriate PDF headers.
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"'
p = canvas.Canvas(response)
qrw = QrCodeWidget('Helo World!')
b = qrw.getBounds()
w=b[2]-b[0]
h=b[3]-b[1]
d = Drawing(45,45,transform=[45./w,0,0,45./h,0,0])
d.add(qrw)
renderPDF.draw(d, p, 1, 1)
p.showPage()
p.save()
return response
Run Code Online (Sandbox Code Playgroud)
你的代码对我有用,虽然我怀疑是因为你没有将它封装在一个视图中?
例如,myapp/views.py
from reportlab.pdfgen import canvas
from django.http import HttpResponse
from reportlab.graphics.shapes import Drawing
from reportlab.graphics.barcode.qr import QrCodeWidget
from reportlab.graphics import renderPDF
# Create your views here.
def test_qr(request):
# Create the HttpResponse object with the appropriate PDF headers.
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"'
p = canvas.Canvas(response)
qrw = QrCodeWidget('Helo World!')
b = qrw.getBounds()
w=b[2]-b[0]
h=b[3]-b[1]
d = Drawing(45,45,transform=[45./w,0,0,45./h,0,0])
d.add(qrw)
renderPDF.draw(d, p, 1, 1)
p.showPage()
p.save()
return response
Run Code Online (Sandbox Code Playgroud)
MyProject的/ urls.py
from django.conf.urls.defaults import patterns, include, url
urlpatterns = patterns('',
url(r'^$', 'myapp.views.test_qr'),
)
Run Code Online (Sandbox Code Playgroud)
打开浏览器说,http:127.0.0.1:8000会提示我下载左下角带有QR码的pdf.如果您不确定如何使用Django,我建议您阅读Django Book Online
| 归档时间: |
|
| 查看次数: |
4992 次 |
| 最近记录: |