Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

OpenERP 6.0.3 on Ubuntu 10.04 LTS Server中文pdf报表的一种解决方法



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



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



  • 不错...感谢分享了.......



  • 解决了我的问题,感谢!



  • [quote author=winson97 link=topic=2622.msg8723#msg8723 date=1318003455]<br />此合成字体的下载地址:http://code.google.com/p/qinsdisk/downloads/list<br /><br />下载后对照上面代码,把<br />DejaVuSansYuanTi-Regular.ttf 改为 DejaVuSans.ttf”,<br />DejaVuSansYuanTi-Bold.ttf 改为 “DejaVuSans-Bold.ttf”,<br />DejaVuSansYuanTi-Italic.ttf 改为“DejaVuSans-Oblique.ttf”,<br />DejaVuSansYuanTi-BoldItalic.ttf 改为“DejaVuSans-BoldOblique.ttf <br /><br />然后把这四个字体上传到服务器usr/share/fonts/truetype/ttf-dejavu目录中,重启服务器,测试报表,中文正常,表头页脚中文也显示正常!<br />[/quote]<br /><br />想试一下这种方法。请问对于 Windows7,上面提到的中文字体应该复制到什么目录中?



  • 对Windows7,将这四种字体复制到windows/fonts目录中,重启动服务器,看了一些pdf报表,中文正常。<br /><br />但产品标签(labels)的pdf文件的中文产品名称还是显示为黑方块。有没有解决的办法?



  • 此方法在XP及win7下打印,打印标签(如楼上提到的产品标签),还为方块,其他打印目前测试正常。



  • 打印标签的时候还是不行,报表没问题了!



  • 有没有真正解决过centos 下报表乱码的问题的?以上的目录在centos下没有找到,在ubuntu 下的确可以<br />


  • 管理员

    没有尝试我们提供的最新解决方案吗?[url=http://shine-it.net/index.php/topic,2791.0.html]http://shine-it.net/index.php/topic,2791.0.html[/url]



  • 那种根本不行。。。每次重启都要重新设置打印字体


  • 管理员

    每次都要重新设置?这个可能是之前的bug,你试试现在下载的,估计已经更新了。


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待