用v6无法打印中文汉字 (reportlab的问题)
-
1 你可以安装 l10n_cn 模块: http://code.google.com/p/hornerp/source/browse/#svn%2Ftrunk%2Faddons%2Fl10n_cn
2 在你的 .rml 文件中, 添加 registerFont ref: [检测到链接无效,已移除] -
理论上原来的base_report_cn还是能用的,只是执行效率不够高。
V6去年引入了customfonts模块以方便rml-pdf报表的字体定义,当时我写了一个很简单的脚本测试了一下,现稍做修改附在附件中。稍后传到launchpad,大家共同维护
另,表头,表尾的字体在系统管理->公司->公司中定义
[EDIT] 字体文件太大,附件放不下, [检测到链接无效,已移除] -
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”。这样,全部报表都可以正常使用中文了。 -
把import openerp.report.render.rml2pdf.customfons改成 import report.render.rml2pdf.customfonts
试试 -
中文pdf报表输出已经并入l10n_cn模块: http://code.google.com/p/openerp-china/source/checkout
为简化问题,该模块中自带了两个开源字体。欢迎大家测试汇报问题。 -
呵呵,有时间会加一些判断逻辑使用各个系统自带的中文字体,达人们有时间也可以共同改进呀。