OpenERP 6.0.3 on Ubuntu 10.04 LTS Server中文pdf报表的一种解决方法
-
最近在 Ubuntu 10.04 LTS Server上安装了OpenERP 6.0.3
安装方法见:http://www.theopensourcerer.com/2011/04/19/how-to-install-openerp-6-on-ubuntu-10-04-lts-server-part-1/
安装完毕遇到不少问题,在论坛爬爬基本都找到解决方法,但“报表的中文”黑框框问题按照论坛中的方法测试了一下没解决,
爬文得知:OpenERP 从6.0起为了解决PDF报表unicode字体的问题(主要集中在亚洲,中国、日本、越南等)增加了server/bin/report/render/rml2pdf/customfonts.py
字体 Helvetica 被 DejaVu Sans所取代(也指出了不同系统下字体文件存放的位置),下面的代码应该是这个意思吧(不好意思,对代码不太了解):
CustomTTFonts = [ ('Helvetica',"DejaVu Sans", "DejaVuSans.ttf", 'normal'),
('Helvetica',"DejaVu Sans Bold", "DejaVuSans-Bold.ttf", 'bold'),
('Helvetica',"DejaVu Sans Oblique", "DejaVuSans-Oblique.ttf", 'italic'),
('Helvetica',"DejaVu Sans BoldOblique", "DejaVuSans-BoldOblique.ttf", 'bolditalic'),
('Times',"Liberation Serif", "LiberationSerif-Regular.ttf", 'normal'),
('Times',"Liberation Serif Bold", "LiberationSerif-Bold.ttf", 'bold'),
('Times',"Liberation Serif Italic", "LiberationSerif-Italic.ttf", 'italic'),
('Times',"Liberation Serif BoldItalic", "LiberationSerif-BoldItalic.ttf", 'bolditalic'),
('Times-Roman',"Liberation Serif", "LiberationSerif-Regular.ttf", 'normal'),
('Times-Roman',"Liberation Serif Bold", "LiberationSerif-Bold.ttf", 'bold'),
('Times-Roman',"Liberation Serif Italic", "LiberationSerif-Italic.ttf", 'italic'),
('Times-Roman',"Liberation Serif BoldItalic", "LiberationSerif-BoldItalic.ttf", 'bolditalic'),
('Courier',"FreeMono", "FreeMono.ttf", 'normal'),
('Courier',"FreeMono Bold", "FreeMonoBold.ttf", 'bold'),
('Courier',"FreeMono Oblique", "FreeMonoOblique.ttf", 'italic'),
('Courier',"FreeMono BoldOblique", "FreeMonoBoldOblique.ttf", 'bolditalic'),]
TTFSearchPath_Linux = [
'/usr/share/fonts/truetype', # SuSE
'/usr/share/fonts/dejavu', '/usr/share/fonts/liberation', # Fedora, RHEL
'/usr/share/fonts/truetype/', # Ubuntu,
'/usr/share/fonts/TTF/', # at Mandriva/Mageia
]
TTFSearchPath_Windows = [
'c:/winnt/fonts',
'c:/windows/fonts'
]
TTFSearchPath_Darwin = [
#mac os X - from
#http://developer.apple.com/technotes/tn/tn2024.html
'~/Library/Fonts',
'/Library/Fonts',
'/Network/Library/Fonts',
'/System/Library/Fonts',
]
参考网站的方法:[u]最简单的方法是拷贝simsun.ttf 文件到字体文件夹,然后分别改名为“DejaVuSans.ttf”,
“DejaVuSans-Bold.ttf”,“DejaVuSans-Oblique.ttf”,“DejaVuSans-BoldOblique.ttf”。这样,全部报表都可以正常使用中文了。[/u]
这个方法打印报表时出错:[u]ValueError: redefining named object: 'toUnicodeCMap:AAAAAA[/u]
估计是映射到unicode中文字体时出错。
有可能这个方法是在OPENERP服务器安装在windows上有效吧,在ubuntu无效。
查阅了不少文档,在ubuntu系统中/usr/share/fonts/truetype/ttf-dejavu路径下放的是unicode的字体DejaVuSans.ttf,这个字体中并没有相对应的中文字体在里面,那么网上有没有含中文字体的DejaVuSans.ttf呢?
在google查询 还真有:
[u][原创]史上最强(伪)的合成字体DejaVuSansYuanTi(http://forum.ubuntu.org.cn/viewtopic.php?f=8&t=110509&sid=26756e767990b4115456acc9f42f1bbd)[/u]
此合成字体的下载地址:http://code.google.com/p/qinsdisk/downloads/list
下载后对照上面代码,把
DejaVuSansYuanTi-Regular.ttf 改为 DejaVuSans.ttf”,
DejaVuSansYuanTi-Bold.ttf 改为 “DejaVuSans-Bold.ttf”,
DejaVuSansYuanTi-Italic.ttf 改为“DejaVuSans-Oblique.ttf”,
DejaVuSansYuanTi-BoldItalic.ttf 改为“DejaVuSans-BoldOblique.ttf
然后把这四个字体上传到服务器usr/share/fonts/truetype/ttf-dejavu目录中,重启服务器,测试报表,中文正常,表头页脚中文也显示正常!
以上方法没有安装中文化模块base_report_cn,也不需要修改Company的表头表尾!
写文不多,不知有否表达清楚?希望有用。 -
[quote author=winson97 link=topic=2622.msg8723#msg8723 date=1318003455]
此合成字体的下载地址:http://code.google.com/p/qinsdisk/downloads/list
下载后对照上面代码,把
DejaVuSansYuanTi-Regular.ttf 改为 DejaVuSans.ttf”,
DejaVuSansYuanTi-Bold.ttf 改为 “DejaVuSans-Bold.ttf”,
DejaVuSansYuanTi-Italic.ttf 改为“DejaVuSans-Oblique.ttf”,
DejaVuSansYuanTi-BoldItalic.ttf 改为“DejaVuSans-BoldOblique.ttf
然后把这四个字体上传到服务器usr/share/fonts/truetype/ttf-dejavu目录中,重启服务器,测试报表,中文正常,表头页脚中文也显示正常!
[/quote]
想试一下这种方法。请问对于 Windows7,上面提到的中文字体应该复制到什么目录中? -
此方法在XP及win7下打印,打印标签(如楼上提到的产品标签),还为方块,其他打印目前测试正常。
-
有没有真正解决过centos 下报表乱码的问题的?以上的目录在centos下没有找到,在ubuntu 下的确可以
-
没有尝试我们提供的最新解决方案吗? [检测到链接无效,已移除]