odoo12 报表打印问题

由于业务需要打印报表时需要预览检查,所以使用的在浏览器直接查看报表后,再进行打印,结果出现如下问题:

使用模块地址:https://apps.odoo.com/apps/modules/12.0/prt_report_attachment_preview/

Traceback (most recent call last):
  File "E:\Odoo12\python\lib\site-packages\werkzeug\serving.py", line 205, in run_wsgi
    execute(self.server.app)
  File "E:\Odoo12\python\lib\site-packages\werkzeug\serving.py", line 196, in execute
    write(data)
  File "E:\Odoo12\python\lib\site-packages\werkzeug\serving.py", line 164, in write
    self.send_header(key, value)
  File "E:\Odoo12\python\lib\http\server.py", line 508, in send_header
    ("%s: %s\r\n" % (keyword, value)).encode('latin-1', 'strict'))
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 31-40: ordinal not in range(256) - - -

问题原因:在打印报表时候,设置文件名称为中文导致

解决:修改模块  prt_controllers.py

引入 

from urllib.parse import quote
pdfhttpheaders = [('Content-Type', 'application/pdf'), ('Content-Length', len(pdf)),
                              ('Content-Disposition', 'filename="%s.pdf"' % (quote(filepart)))]

quote()
传入参数类型:字符串
功能:将单个字符串编码转化为 %xx 的形式
按照标准, URL 只允许一部分 ASCII 字符(数字字母和部分符号),其他的字符(如汉字)是不符合 URL 标准的。
所以 URL 中使用其他字符就需要进行 URL 编码。

你可能感兴趣的:(Odoo12)