为什么在此示例中生成的PDF文件中,我的水印未显示?我该如何解决? (没有错误,只是没有显示“WATERMARK”。)
https://docs.djangoproject.com/en/dev/howto/outputting-pdf/#outputting-pdfs-with-django
import xhtml2pdf
from xhtml2pdf import pisa
import reportlab
from reportlab.pdfgen import canvas
def delivery_cancel(request, did):
d_instance = get_object_or_404(Delivery, pk=did, user=request.user)
users = request.user.get_profile()
user = request.user
contents = render_to_string('delivery_cancel.html', {'delivery':d_instance,'users':users,'user':user})
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'inline; filename=mypdf.pdf'
result = StringIO.StringIO()
pdf = pisa.pisaDocument(StringIO.StringIO(contents.encode('utf-8')), result, show_error_as_pdf=True, encoding='UTF-8')
x = canvas.Canvas(pdf)
x.drawString(100, 100, 'WATERMARK')
x.save()
response.write(result.getvalue())
result.close()
return response
修改
def delivery_cancel(request, did):
d_instance = get_object_or_404(Delivery, pk=did, user=request.user)
users = request.user.get_profile()
user = request.user
contents = render_to_string('delivery_cancel.html', {'delivery':d_instance,'users':users,'user':user})
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'inline; filename=mypdf.pdf'
content_stream = StringIO.StringIO(contents.encode('utf-8'))
x = canvas.Canvas(content_stream)
x.drawString(100, 100, 'WATERMARK')
x.showPage()
x.save()
result = StringIO.StringIO()
pdf = pisa.pisaDocument(content_stream, result, show_error_as_pdf=True, encoding='UTF-8')
response.write(result.getvalue())
result.close()
return response
现在缺少水印,看起来pisaDocument
无效,因为PDF格式看起来不同。 (或者我又做错了什么)