作者 主题: 用v6无法打印中文汉字 (reportlab的问题)  (阅读 4088 次)

elicoidal

  • 新手上路
  • *
  • 帖子: 19
  • 人气: 0
用v6无法打印中文汉字 (reportlab的问题)
« 于: 三月 01, 2011, 09:22:23 上午 »
你们好
我安装了一些次OPENERPV6:用英文没文题但是我要打印中文汉字。在openerp里面,我看得了它们可是打印quotation的时候,只有白色的四方。
在我的服务器里面有中文的fonts。有没有另外特别的方法所以我可以打印中文?
谢谢你们的帮助
ERIC

mrshelly

  • 唐僧初段
  • *****
  • 帖子: 944
  • 人气: 2
  • OpenERP python,php,js 谢谢
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #1 于: 三月 01, 2011, 09:58:51 上午 »
1 你可以安装 l10n_cn 模块: http://code.google.com/p/hornerp/source/browse/#svn%2Ftrunk%2Faddons%2Fl10n_cn


2 在你的 .rml 文件中, 添加 registerFont  ref: http://shine-it.net/index.php/topic,2230.0.html

elicoidal

  • 新手上路
  • *
  • 帖子: 19
  • 人气: 0
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #2 于: 三月 01, 2011, 10:27:36 上午 »
你好,
谢谢你的快回答
你的方法可以的但是可能一点麻烦因为你应该修改所有的reports。现在我用base_report_unicode module。这样不要修改report但是很慢。
其实现在不太清楚哪一个方法最好。。。
ERIC

mrshelly

  • 唐僧初段
  • *****
  • 帖子: 944
  • 人气: 2
  • OpenERP python,php,js 谢谢
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #3 于: 三月 01, 2011, 10:34:56 上午 »
我推荐使用 添加 registerFont 的方法... 因为这是一次性的... 

必要时, 可以自己写一个 script 去刷新所有的 rml 文件以及 update 到 PostgreSQL 数据库

Jeff

  • 还没入门呢
  • 全局版主
  • 唐僧初段
  • *****
  • 帖子: 506
  • 人气: 5
    • 新社区,打造OpenERP在中国的权威机构
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #4 于: 三月 01, 2011, 12:16:28 下午 »
Eric, 请下载这个模块 http://openerp-community-addons.googlecode.com/files/base_report_cn.zip
内容与shelly推荐的l10n_cn是一样的,只是6.0里已经有模块使用了l10n_cn这个名字,恐怕会引起混淆。
至于.rml文件我记得不需要改的,此模块的功能是替换原有pdf文件的字体。
根据我在6.0上半天的测试,由于官方改变了公司设置里report_header和footer的字体,所以页眉页脚还是乱码。但估计是很容易调整的
OpenERP 高级实施顾问
上海先安科技
jeff AT openerp.cn


elicoidal

  • 新手上路
  • *
  • 帖子: 19
  • 人气: 0
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #5 于: 三月 01, 2011, 12:33:51 下午 »
Jeff你好
你的模块跟report_base_unicode差不多。用mrshelly的方法好像不够但是用report base的模块行。 我觉得report_header和footer的字体不重要因为每一个公司有自己的。
其实我以为v6可以管理unicode但是好像还要加入特别的模块。真倒霉

eric

mrshelly

  • 唐僧初段
  • *****
  • 帖子: 944
  • 人气: 2
  • OpenERP python,php,js 谢谢
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #6 于: 三月 01, 2011, 12:50:44 下午 »
其实 最蛋疼的问题 是 中文字体名

EP: 宋体 === SimSun

digitalsatori

  • 论坛管理员
  • 唐僧初段
  • *****
  • 帖子: 897
  • 人气: 49
    • 上海先安科技
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #7 于: 三月 01, 2011, 02:42:39 下午 »
理论上原来的base_report_cn还是能用的,只是执行效率不够高。
  V6去年引入了customfonts模块以方便rml-pdf报表的字体定义,当时我写了一个很简单的脚本测试了一下,现稍做修改附在附件中。稍后传到launchpad,大家共同维护
另,表头,表尾的字体在系统管理->公司->公司中定义

[EDIT] 字体文件太大,附件放不下,这里下载
« 最后编辑时间: 三月 01, 2011, 02:46:13 下午 作者 digitalsatori »
OpenERP高级实施顾问
上海先安科技 (http://www.openerp.cn)
tony AT openerp.cn
021 50323731

hanliux

  • 新手上路
  • *
  • 帖子: 1
  • 人气: 0
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #8 于: 三月 01, 2011, 02:55:36 下午 »
OE 6.0 使用了以下自定义字体。

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'),]

系统需要在字体文件夹能搜索到上面列出的字体文件,最简单的方法是拷贝simsun.ttf 文件到字体文件夹,然后分别改名为“DejaVuSans.ttf”,
“DejaVuSans-Bold.ttf”,“DejaVuSans-Oblique.ttf”,“DejaVuSans-BoldOblique.ttf”。这样,全部报表都可以正常使用中文了。

Wbird

  • 新手上路
  • *
  • 帖子: 11
  • 人气: 0
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #9 于: 三月 17, 2011, 04:30:42 下午 »
搭车问一下,产品的stock level forest报表中,右侧的产品名称是什么字体?
ls诸位的方法我都试了,其他位置全部没有问题了,就是这里还是乱码。。。

mrshelly

  • 唐僧初段
  • *****
  • 帖子: 944
  • 人气: 2
  • OpenERP python,php,js 谢谢
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #10 于: 三月 17, 2011, 04:41:34 下午 »
Stock Level Forecast 报表 与一般的 rml pdf 报表不一样..

它是 graph 的报表. 是由 pychart 直接演染的.  要支持中文, 可能要参阅 pychart 的相关文档(我记得我以前好象测试过, 没有把 pychart 的中文问题搞定)

具体的 请查看 addons\stock\report\product_stock.py 以及  addons\stock\report\stock_graph.py 文件.

dquo

  • 小试牛刀
  • **
  • 帖子: 84
  • 人气: 0
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #11 于: 四月 11, 2011, 11:02:12 下午 »
校长的文件下载后,直接放到ADDONS下,OPENERP好象不能直接检测到,是不是模块有点出错呀~不好意思!谁装成功了能否给点提示呀

Jeff

  • 还没入门呢
  • 全局版主
  • 唐僧初段
  • *****
  • 帖子: 506
  • 人气: 5
    • 新社区,打造OpenERP在中国的权威机构
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #12 于: 四月 11, 2011, 11:14:36 下午 »
导入ZIP文件安装也不行

ImportError: No module named openerp.report.render.rml2pdf.customfonts

OpenERP 高级实施顾问
上海先安科技
jeff AT openerp.cn


digitalsatori

  • 论坛管理员
  • 唐僧初段
  • *****
  • 帖子: 897
  • 人气: 49
    • 上海先安科技
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #13 于: 四月 13, 2011, 12:35:56 上午 »
把import openerp.report.render.rml2pdf.customfons改成 import report.render.rml2pdf.customfonts
试试
OpenERP高级实施顾问
上海先安科技 (http://www.openerp.cn)
tony AT openerp.cn
021 50323731

Jeff

  • 还没入门呢
  • 全局版主
  • 唐僧初段
  • *****
  • 帖子: 506
  • 人气: 5
    • 新社区,打造OpenERP在中国的权威机构
Re: 用v6无法打印中文汉字 (reportlab的问题)
« 回复 #14 于: 四月 13, 2011, 09:15:04 下午 »
按校长所说去掉openerp. 安装成功,打印出来的报表还是黑框
server log是:
File "/usr/lib/python2.6/dist-packages/reportlab/pdfbase/ttfonts.py", line 267 ,in readFile
   self._ttf_data = file.read()

AttributeError: 'unicode' object has no attribute 'read'

环境:OpenERP6.0 源码运行在ubuntu server上,web端访问

OpenERP 高级实施顾问
上海先安科技
jeff AT openerp.cn


Tags: 中文报表 pdf