如何在我的Django应用中访问带有特殊字符的pdf?

时间:2019-01-24 21:15:39

标签: django pdf gunicorn xhtml2pdf

我有一个django应用程序,使用nginx和gunicorn托管。

我拥有的功能之一是使用xhtml2pdf即时生成PDF。

我可以通过/ pdf /(id)/等网址访问pdf,但是我遇到的问题是文件名。

导致该问题的代码段是:

# generate the pdf. This function has been tested and is not causing the problem
pdf = render_to_pdf(template, data)

if pdf:
    response = HttpResponse(pdf, content_type='application/pdf')
    filename = "cotización_%s.pdf" % (doc_name)
    content = "inline; filename='%s'" % (filename)

    response['Content-Disposition'] = content

    return response

从错误日志中,我意识到问题出在文件名(cotización)的重音上

File "~/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 182, in handle_request
    resp.write(item)
  File "~/lib/python3.6/site-packages/gunicorn/http/wsgi.py", line 333, in write
    self.send_headers()
  File "~/lib/python3.6/site-packages/gunicorn/http/wsgi.py", line 329, in send_headers
    util.write(self.sock, util.to_bytestring(header_str, "ascii"))
  File "~/lib/python3.6/site-packages/gunicorn/util.py", line 507, in to_bytestring
    return value.encode(encoding)
UnicodeEncodeError: 'ascii' codec can't encode character '\xf3' in position 176: ordinal not in range(128)

在我的本地主机上,我可以完美地访问pdf。但是在我的服务器上,我收到502错误。如果我删除“ó”,问题就解决了。

所以我的问题是,我如何提供包含文件名上的重音符号的pdf文件?

注意:口音不在URL上,仅在文件名上。

0 个答案:

没有答案