作者 主题: OpenERP 6.0.3 on Ubuntu 10.04 LTS Server中文pdf报表的一种解决方法  (阅读 1670 次)

winson97

  • 新手上路
  • *
  • 帖子: 6
  • 人气: 0
最近在 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',
            ]

参考网站的方法:最简单的方法是拷贝simsun.ttf 文件到字体文件夹,然后分别改名为“DejaVuSans.ttf”,
“DejaVuSans-Bold.ttf”,“DejaVuSans-Oblique.ttf”,“DejaVuSans-BoldOblique.ttf”。这样,全部报表都可以正常使用中文了。


这个方法打印报表时出错:ValueError: redefining named object: 'toUnicodeCMap:AAAAAA

估计是映射到unicode中文字体时出错。

有可能这个方法是在OPENERP服务器安装在windows上有效吧,在ubuntu无效。

查阅了不少文档,在ubuntu系统中/usr/share/fonts/truetype/ttf-dejavu路径下放的是unicode的字体DejaVuSans.ttf,这个字体中并没有相对应的中文字体在里面,那么网上有没有含中文字体的DejaVuSans.ttf呢?
在google查询 还真有:
[原创]史上最强(伪)的合成字体DejaVuSansYuanTi(http://forum.ubuntu.org.cn/viewtopic.php?f=8&t=110509&sid=26756e767990b4115456acc9f42f1bbd)

此合成字体的下载地址: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的表头表尾!

写文不多,不知有否表达清楚?希望有用。
« 最后编辑时间: 十月 08, 2011, 09:25:15 上午 作者 winson97 »

mrshelly

  • 唐僧初段
  • *****
  • 帖子: 944
  • 人气: 2
  • OpenERP python,php,js 谢谢
Re: OpenERP 6.0.3 on Ubuntu 10.04 LTS Server中文pdf报表的一种解决方法
« 回复 #1 于: 十月 08, 2011, 06:11:32 上午 »
不错...感谢分享了.......

sean

  • 新手上路
  • *
  • 帖子: 1
  • 人气: 0
Re: OpenERP 6.0.3 on Ubuntu 10.04 LTS Server中文pdf报表的一种解决方法
« 回复 #2 于: 十月 16, 2011, 05:09:28 下午 »
解决了我的问题,感谢!

Astra

  • 新手上路
  • *
  • 帖子: 13
  • 人气: 0
Re: OpenERP 6.0.3 on Ubuntu 10.04 LTS Server中文pdf报表的一种解决方法
« 回复 #3 于: 十月 21, 2011, 12:13:06 上午 »
此合成字体的下载地址: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目录中,重启服务器,测试报表,中文正常,表头页脚中文也显示正常!

想试一下这种方法。请问对于 Windows7,上面提到的中文字体应该复制到什么目录中?

Astra

  • 新手上路
  • *
  • 帖子: 13
  • 人气: 0
Re: OpenERP 6.0.3 on Ubuntu 10.04 LTS Server中文pdf报表的一种解决方法
« 回复 #4 于: 十月 24, 2011, 11:09:50 下午 »
对Windows7,将这四种字体复制到windows/fonts目录中,重启动服务器,看了一些pdf报表,中文正常。

但产品标签(labels)的pdf文件的中文产品名称还是显示为黑方块。有没有解决的办法?

lu.zw@qq.com

  • 新手上路
  • *
  • 帖子: 1
  • 人气: 0
Re: OpenERP 6.0.3 on Ubuntu 10.04 LTS Server中文pdf报表的一种解决方法
« 回复 #5 于: 十月 29, 2011, 04:49:17 下午 »
此方法在XP及win7下打印,打印标签(如楼上提到的产品标签),还为方块,其他打印目前测试正常。
« 最后编辑时间: 十月 29, 2011, 05:06:28 下午 作者 lu.zw@qq.com »

smkke

  • 新手上路
  • *
  • 帖子: 1
  • 人气: 0
Re: OpenERP 6.0.3 on Ubuntu 10.04 LTS Server中文pdf报表的一种解决方法
« 回复 #6 于: 十一月 10, 2011, 11:12:06 下午 »
打印标签的时候还是不行,报表没问题了!