通过nginx代理的odoo报表打印时总是超时 问题解决 (转)

转自:http://blog.sina.com.cn/s/blog_53d318170102wvnm.html

 

 

背景

  将odoo服务器部署在公网上, 服务器没有公网地址,  前端使用nginx提供对外服务的公网ip和tcp端口

 qweb-html类型的报表能正常在浏览器上显示,但打印时浏览器上出现如下错误:
 Uncaught SyntaxError:
追溯:
SyntaxError: Unexpected token S
    at Object.parse (native)
    at HTMLIFrameElement. (http://..../web/content/.../web.assets_common.js:3038:379)
    at HTMLIFrameElement.jQuery.event.dispatch (http://.../web/content/.../web.assets_common.js:637:451)
    at HTMLIFrameElement.elemData.handle (http://.../web/content/.../web.assets_common.js:610:173)
 
  qweb-pdf类型的的报表打印时 也出现上述错误。
 
解决方法
  在设置| 技术| 参数| 系统参数 界面中, 增加一个系统参数
  参数名称:  report.url
  取值 :http://127.0.0.1:8069
 
原因: 
  odoo生成报表时, 首先生成html格式的报表, 然后使用Wkhtmltopdf将 html转换成pdf
  当不设置report.url时,其html 报表内,有如下内容
 

...

....
因服务器使用内网ip 无法访问其被映射的公网ip, 导致在服务器上无法访问css , 也就无法生成pdf
 
相关源码
文件addon|report|model|report.py
       irconfig_obj = self.env['ir.config_parameter'].sudo()
       base_url = irconfig_obj.get_param('report.url') or irconfig_obj.get_param('web.base.url')
 
 
 
我碰到的问题其表象与其不一致,就是点击打印后一直不动,直到超时时间过了,然后报一个错。
但是我通过上述的解决方案也解决了我的问题。今天在此记录一下。

posted on 2020-06-13 09:36  激流中的树叶  阅读(443)  评论(0编辑  收藏  举报