为什么在此示例中生成的PDF文件中,我的水印未显示?

时间:2013-12-30 11:04:03

标签: python django reportlab

为什么在此示例中生成的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格式看起来不同。 (或者我又做错了什么)

0 个答案:

没有答案