Oecn_base_fonts 使用说明(解决v.7.0,v6.1,V6.0.x的PDF中文字体方框问题,支持CJK语言)
-
安装了oecn_base_fonts 模块后
字头置换成了中文,但是内容仍是方块。请Joshua 指教!(操作系统 OPenSUSE12.2, OPENERP6.1.2)
----------------------------------------------------------------------------------
并且每次替换至最后一种字体,会出现以下错误:
Client Traceback (most recent call last):
File "/opt/openerp-6.1-2/openerp/addons/web/common/http.py", line 180, in dispatch
response["result"] = method(controller, self, **self.params)
File "/opt/openerp-6.1-2/openerp/addons/web/controllers/main.py", line 1052, in call_button
action = self.call_common(req, model, method, args, domain_id, context_id)
File "/opt/openerp-6.1-2/openerp/addons/web/controllers/main.py", line 996, in call_common
return self._call_kw(req, model, method, args, {})
File "/opt/openerp-6.1-2/openerp/addons/web/controllers/main.py", line 1010, in _call_kw
return getattr(req.session.model(model), method)(*args, **kwargs)
File "/opt/openerp-6.1-2/openerp/addons/web/common/openerplib/main.py", line 250, in proxy
args, kw)
File "/opt/openerp-6.1-2/openerp/addons/web/common/openerplib/main.py", line 117, in proxy
result = self.connector.send(self.service_name, method, *args)
File "/opt/openerp-6.1-2/openerp/addons/web/common/http.py", line 608, in send
raise xmlrpclib.Fault(openerp.tools.exception_to_unicode(e), formatted_info)
Server Traceback (most recent call last):
File "/opt/openerp-6.1-2/openerp/addons/web/common/http.py", line 593, in send
return openerp.netsvc.dispatch_rpc(service_name, method, args)
File "/opt/openerp-6.1-2/openerp/netsvc.py", line 360, in dispatch_rpc
result = ExportService.getService(service_name).dispatch(method, params)
File "/opt/openerp-6.1-2/openerp/service/web_services.py", line 586, in dispatch
res = fn(db, uid, *params)
File "/opt/openerp-6.1-2/openerp/osv/osv.py", line 167, in execute_kw
return self.execute(db, uid, obj, method, *args, **kw or {})
File "/opt/openerp-6.1-2/openerp/osv/osv.py", line 121, in wrapper
return f(self, dbname, *args, **kwargs)
File "/opt/openerp-6.1-2/openerp/osv/osv.py", line 176, in execute
res = self.execute_cr(cr, uid, obj, method, *args, **kw)
File "/opt/openerp-6.1-2/openerp/osv/osv.py", line 164, in execute_cr
return getattr(object, method)(cr, uid, *args, **kw)
File "/opt/openerp-6.1-2/openerp/addons/base/res/res_config.py", line 120, in action_next
next = self.execute(cr, uid, ids, context=context)
File "/opt/openerp-6.1-2/openerp/addons/oecn_base_fonts/oecn_base_fonts_config.py", line 163, in execute
new_font_rml = '<setFont name="'+o.map_ids[0].name+'" '
IndexError: list index out of range
----------------------------------------------------------------------------------
最后安装了base_report_cn以后,报表内容从方块换成了中文字体 (重启openerp-server) -
配置字体规则的时候报错:
OpenERP Server Error
Client Traceback (most recent call last):
File "C:\Program Files\OpenERP 6.1-1\server\openerp\addons\web\common\http.py", line 180, in dispatch
File "C:\Program Files\OpenERP 6.1-1\server\openerp\addons\web\controllers\main.py", line 1161, in load
File "C:\Program Files\OpenERP 6.1-1\server\openerp\addons\web\controllers\main.py", line 1043, in fields_view_get
File "C:\Program Files\OpenERP 6.1-1\server\openerp\addons\web\common\openerplib\main.py", line 250, in proxy
File "C:\Program Files\OpenERP 6.1-1\server\openerp\addons\web\common\openerplib\main.py", line 117, in proxy
File "C:\Program Files\OpenERP 6.1-1\server\openerp\addons\web\common\http.py", line 611, in send
Server Traceback (most recent call last):
File "C:\Program Files\OpenERP 6.1-1\server\openerp\addons\web\common\http.py", line 592, in send
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\netsvc.py", line 360, in dispatch_rpc
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\service\web_services.py", line 572, in dispatch
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\osv\osv.py", line 167, in execute_kw
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\osv\osv.py", line 121, in wrapper
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\osv\osv.py", line 176, in execute
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\osv\osv.py", line 164, in execute_cr
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\osv\orm.py", line 2149, in fields_view_get
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\osv\orm.py", line 1789, in __view_look_dom_arch
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\osv\orm.py", line 1738, in __view_look_dom
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\osv\orm.py", line 1738, in __view_look_dom
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\osv\orm.py", line 1738, in __view_look_dom
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\osv\orm.py", line 1661, in __view_look_dom
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\osv\orm.py", line 1788, in __view_look_dom_arch
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\osv\orm.py", line 3322, in fields_get
File "C:\Program Files\OpenERP 6.1-1\server.\openerp\osv\fields.py", line 1590, in field_to_dict
File "C:\Program Files\OpenERP 6.1-1\server\openerp\addons\oecn_base_fonts\oecn_base_fonts_config.py", line 39, in get_system_fonts
File "C:\Program Files\OpenERP 6.1-1\server\openerp\addons\oecn_base_fonts\oecn_base_fonts_config.py", line 49, in _system_fonts_get
File "reportlab\lib\fontfinder.pyo", line 259, in search
File "reportlab\pdfbase\ttfonts.pyo", line 413, in init
File "reportlab\pdfbase\ttfonts.pyo", line 473, in extractInfo
ValueError: chr() arg not in range(256) -
oecn_base_fonts 无法找到字体的一种解决方案
环境:
Aliyun CentOS 6.3
Python 2.7.3 (源码编译安装)
reportlab 2.6 (源码默认编译安装)
查看reportlab模块路径
# python -c "import reportlab; print reportlab.file"
/opt/python2.7/lib/python2.7/site-packages/reportlab/init.pyc
# cd /opt/python2.7/lib/python2.7/site-packages/reportlab
创建目录,如有fonts目录则跳过
# mkdir fonts
复制字体文件
# cp wqy-zenhei.ttc ./fonts
重启 OE , done! -
[quote author=Joshua link=topic=2791.msg17643#msg17643 date=1374112404]
模块完全免费。错误详情需要你提供server-log才能知道
[/quote]
经过几日的倒腾,发现Win7 64位版本无法安装, Win7 32位和Win2003 32位都没问题。 错误日志非常蛋疼,没有发现有价值的信息。
2013-07-25 10:31:56,966 948 [1;32m[1;49mINFO[0m test openerp.modules.module: module oec
n_base_fonts: creating or updating database tables
2013-07-25 10:31:57,385 948 [1;32m[1;49mINFO[0m test openerp.modules.loading: module oe
cn_base_fonts: loading oecn_font_installer.xml
2013-07-25 10:32:16,944 948 [1;31m[1;49mERROR[0m test openerp.addons.base.ir.ir_ui_view
: Can't render view for model: oecn.font.installer
Traceback (most recent call last):
File "c:\temp\OpenERP\OpenERP\openerp\addons\base\ir\ir_ui_view.py", line 126, in _check
_render_view
fvg = self.pool.get(view.model).fields_view_get(cr, uid, view_id=view.id, view_type=vi
ew.type, context=context)
File "c:\temp\OpenERP\OpenERP\openerp\osv\orm.py", line 2260, in fields_view_get
xarch, xfields = self.__view_look_dom_arch(cr, user, result['arch'], view_id, context=
ctx)
File "c:\temp\OpenERP\OpenERP\openerp\osv\orm.py", line 1913, in __view_look_dom_arch
fields_def = self.__view_look_dom(cr, user, node, view_id, False, fields, context=cont
ext)
File "c:\temp\OpenERP\OpenERP\openerp\osv\orm.py", line 1859, in __view_look_dom
fields.update(self.__view_look_dom(cr, user, f, view_id, in_tree_view, model_fields, c
ontext))
File "c:\temp\OpenERP\OpenERP\openerp\osv\orm.py", line 1859, in __view_look_dom
fields.update(self.__view_look_dom(cr, user, f, view_id, in_tree_view, model_fields, c
ontext))
File "c:\temp\OpenERP\OpenERP\openerp\osv\orm.py", line 1776, in __view_look_dom
xarch, xfields = relation.__view_look_dom_arch(cr, user, f, view_id, ctx)
File "c:\temp\OpenERP\OpenERP\openerp\osv\orm.py", line 1912, in __view_look_dom_arch
fields = self.fields_get(cr, user, None, context)
File "c:\temp\OpenERP\OpenERP\openerp\osv\orm.py", line 3514, in fields_get
res[f] = fields.field_to_dict(self, cr, user, field, context=context)
File "c:\temp\OpenERP\OpenERP\openerp\osv\fields.py", line 1525, in field_to_dict
res['selection'] = field.selection(model, cr, user, context)
File "c:\temp\OpenERP\OpenERP\openerp\addons\oecn_base_fonts\oecn_font_installer.py", li
ne 54, in get_system_fonts
return self._system_fonts_get(cr, uid)
File "c:\temp\OpenERP\OpenERP\openerp\addons\oecn_base_fonts\oecn_font_installer.py", li
ne 69, in _system_fonts_get
ff.search()
File "c:\temp\OpenERP\OpenERP\python\lib\site-packages\reportlab\lib\fontfinder.py", lin
e 259, in search
font = TTFontFile(fileName,validate=self.validate)
File "c:\temp\OpenERP\OpenERP\python\lib\site-packages\reportlab\pdfbase\ttfonts.py", li
ne 413, in init
self.extractInfo(charInfo)
File "c:\temp\OpenERP\OpenERP\python\lib\site-packages\reportlab\pdfbase\ttfonts.py", li
ne 473, in extractInfo
A(chr(char))
ValueError: chr() arg not in range(256)
2013-07-25 10:32:17,247 948 [1;31m[1;49mERROR[0m test openerp.tools.convert: Parse erro
r in file:///c:/temp/OpenERP/OpenERP/openerp/addons/oecn_base_fonts/oecn_font_installer.xm
l:5:
<record id="view_font_configuration_installer" model="ir.ui.view">
<field name="name">oecn.font.installer.form</field>
<field name="model">oecn.font.installer</field>
<field name="inherit_id" ref="base.res_config_installer"/>
<field name="arch" type="xml">
<data><form position="attributes" version="7.0">
<attribute name="string">Customer Font Mapping Configuration</attribut
e>
</form>
<footer position="replace">
<footer>
<button name="action_next" type="object" string="Continue" class="oe
_highlight"/>
</footer>
</footer>
<separator string="title" position="replace">
<p class="oe_grey">
Fonts used in the default report may not support the characters in
your lanuage. Use the setting here to replace the Original font with the font you choose.
</p>
<group>
<field name="wrap" class="oe_inline"/>
<field name="map_ids" nolabel="1" colspan="4">
<tree string="Font replace" editable="top">
<field name="pdf_font"/>
<field name="new_font" on_change="onchange_new_font(new_font)"
/>
<field name="name"/>
</tree>
</field>
</group>
</separator>
</data></field>
</record>
Traceback (most recent call last):
File "c:\temp\OpenERP\OpenERP\openerp\tools\convert.py", line 847, in parse
self._tags[rec.tag](self.cr, rec, n)
File "c:\temp\OpenERP\OpenERP\openerp\tools\convert.py", line 814, in _tag_record
id = self.pool.get('ir.model.data')._update(cr, self.uid, rec_model, self.module, res,
rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mod
e=self.mode, context=rec_context )
File "c:\temp\OpenERP\OpenERP\openerp\addons\base\ir\ir_model.py", line 963, in _update
res_id = model_obj.create(cr, uid, values, context=context)
File "c:\temp\OpenERP\OpenERP\openerp\addons\base\ir\ir_ui_view.py", line 103, in create
return super(view, self).create(cr, uid, values, context)
File "c:\temp\OpenERP\OpenERP\openerp\osv\orm.py", line 4470, in create
self._validate(cr, user, [id_new], context)
File "c:\temp\OpenERP\OpenERP\openerp\osv\orm.py", line 1544, in _validate
raise except_orm('ValidateError', '\n'.join(error_msgs))
except_orm: ('ValidateError', u'Error occurred while validating the field(s) arch: Invalid
XML for View Architecture!')
2013-07-25 10:32:17,558 948 [1;31m[1;49mERROR[0m test openerp.netsvc: ValidateError
Error occurred while validating the field(s) arch: Invalid XML for View Architecture!
Traceback (most recent call last):
File "c:\temp\OpenERP\OpenERP\openerp\netsvc.py", line 292, in dispatch_rpc
result = ExportService.getService(service_name).dispatch(method, params)
File "c:\temp\OpenERP\OpenERP\openerp\service\web_services.py", line 626, in dispatch
res = fn(db, uid, *params)
File "c:\temp\OpenERP\OpenERP\openerp\osv\osv.py", line 188, in execute_kw
return self.execute(db, uid, obj, method, *args, **kw or {})
File "c:\temp\OpenERP\OpenERP\openerp\osv\osv.py", line 144, in wrapper
raise except_osv(inst.name, inst.value)
except_osv: ('ValidateError', u'Error occurred while validating the field(s) arch: Invalid
XML for View Architecture!')
2013-07-25 10:32:17,647 948 [1;32m[1;49mINFO[0m test werkzeug: 127.0.0.1 - - [25/Jul/20
13 10:32:17] "POST /web/dataset/call_button HTTP/1.1" 200 -
2013-07-25 10:32:18,003 948 [1;32m[1;49mINFO[0m ? werkzeug: 127.0.0.1 - - [25/Jul/2013
10:32:18] "GET /web/static/src/img/warning.png HTTP/1.1" 200 - -
[quote author=wangbuke link=topic=2791.msg14384#msg14384 date=1362545060]
oecn_base_fonts 无法找到字体的一种解决方案
环境:
Aliyun CentOS 6.3
Python 2.7.3 (源码编译安装)
reportlab 2.6 (源码默认编译安装)
查看reportlab模块路径
# python -c "import reportlab; print reportlab.file"
/opt/python2.7/lib/python2.7/site-packages/reportlab/init.pyc
# cd /opt/python2.7/lib/python2.7/site-packages/reportlab
创建目录,如有fonts目录则跳过
# mkdir fonts
复制字体文件
# cp wqy-zenhei.ttc ./fonts
重启 OE , done!
[/quote]
这个文泉倚字体免费,不错。 -
OE8无法用吗,如何搞?GreenOpenERP绿色包。
oecn_base_fonts-trunk.2.1.1
Traceback (most recent call last):
File "/opt/OpenERP-wms/openerp/http.py", line 470, in dispatch
result = self._call_function(**self.params)
File "/opt/OpenERP-wms/openerp/http.py", line 294, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/OpenERP-wms/openerp/service/model.py", line 113, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/OpenERP-wms/openerp/http.py", line 291, in checked_call
return self.endpoint(*a, **kw)
File "/opt/OpenERP-wms/openerp/http.py", line 638, in call
return self.method(*args, **kw)
File "/opt/OpenERP-wms/openerp/http.py", line 337, in response_wrap
response = f(*args, **kw)
File "/opt/OpenERP-wms/openerp/addons/web/controllers/main.py", line 1246, in call_button
action = self._call_kw(model, method, args, {})
File "/opt/OpenERP-wms/openerp/addons/web/controllers/main.py", line 1234, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
File "/opt/OpenERP-wms/openerp/addons/base/module/module.py", line 428, in button_immediate_install
return self._button_immediate_function(cr, uid, ids, self.button_install, context=context)
File "/opt/OpenERP-wms/openerp/addons/base/module/module.py", line 479, in _button_immediate_function
registry = openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True)
File "/opt/OpenERP-wms/openerp/modules/registry.py", line 298, in new
openerp.modules.load_modules(registry._db, force_demo, status, update_module)
File "/opt/OpenERP-wms/openerp/modules/loading.py", line 339, in load_modules
loaded_modules, update_module)
File "/opt/OpenERP-wms/openerp/modules/loading.py", line 243, in load_marked_modules
loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
File "/opt/OpenERP-wms/openerp/modules/loading.py", line 155, in load_module_graph
init_module_models(cr, package.name, models)
File "/opt/OpenERP-wms/openerp/modules/module.py", line 237, in init_module_models
result = obj._auto_init(cr, {'module': module_name})
File "/opt/OpenERP-wms/openerp/osv/orm.py", line 2899, in _auto_init
cr.execute('ALTER TABLE "%s" ADD COLUMN "%s" %s' % (self._table, k, get_pg_type(f)[1]))
TypeError: 'NoneType' object has no attribute 'getitem' -
OE8已经内置了一个类似的字体替换方法,不需要安装这个模块了。等V8发布,全部是Qweb报表就更用不着替换字体了。
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login