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 编码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值