Trong ReportLab, Vẽ đối tượng có thể được ghi vào kết xuất đồ họa khác nhau, ví dụ:Django ReportLab: sử dụng đối tượng Vẽ để tạo PDF và gửi lại qua HttpResponse
d = shapes.Drawing(400, 400)
renderPDF.drawToFile(d, 'test.pdf')
và trong Django, đối tượng Canvas có thể được gửi qua HttpResponse, ví dụ như:
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'filename=test.pdf'
c = canvas.Canvas(response)
trong trường hợp của tôi, sự cố của tôi là tôi có tập lệnh reportLab sử dụng đối tượng Vẽ để lưu vào hệ thống tệp cục bộ. Tôi bây giờ đặt nó trong quan điểm Django, và tự hỏi liệu có một cách để không lưu vào hệ thống tập tin địa phương nhưng thay vì gửi lại cho khách hàng.
Tôi hy vọng tôi mô tả rõ ràng câu hỏi này.
Cảm ơn lời khuyên nào!
cập nhật
nó quay ra có một chức năng trong renderPDF:
renderPDF.draw(drawing, canvas, x, y)
mà có thể làm cho bản vẽ() đối tượng trong khung hình nhất định.
cảm ơn! nhưng tôi nghĩ bạn hiểu lầm câu hỏi của tôi, hoặc tôi không nói rất rõ ràng. Tôi biết làm thế nào để làm điều này bằng cách sử dụng đối tượng Canvas, tôi đang tìm kiếm một cách để đặt Vẽ() đối tượng trong httpresponse. – Simon
vì vậy tôi có thể hiểu mẫu bạn đã cung cấp dưới dạng: d = Bản vẽ (400, 400) và sau đó: pdf = buffer.getvalue() buffer.close() và cuối cùng là: response.write (pdf)? – Simon
nó không hoạt động với Drawing(). vải là tốt. trong ví dụ của bạn, có lỗi đánh máy: đệm <-> tmp – Simon