Как включить отчеты RML, чтобы они могли печатать китайские иероглифы?
- Убедитесь, что у вас установлены китайские шрифты (Simsun, Simhei, WenQuanYiZhenHei)
- Вставьте свой шрифт в библиотеку и настройки RML, или мы можем сказать «зарегистрируйте шрифт, который вы хотите использовать в RML».
- Измените имя шрифта в отчете RML (например, slow_moving_report.rml)
ДАВАЙТЕ НАЧНЕМ :
В этом случае я хочу использовать шрифт Simsun в своем отчете о медленном движении.
(К вашему сведению: я делаю это в Ubuntu 10.04)
Как сделать китайские шрифты?
Вы можете установить вручную или через терминал
• Если вы хотите установить вручную
- Перейдите в папку C:\WINDOWS\Fonts в вашей ОС Windows.
- Скопируйте тип шрифта, который вы хотите (.ttf / .ttc)
- Скопируйте в свою ОС Ubuntu
- Дважды щелкните шрифт и установите
• Если вы хотите установить через терминал, вы можете перейти по этой ссылке: http://xgwang.wordpress.com/2007/11/25/set-up-chinese-fonts-using-microsofts-simsunttf-in-ubuntu-71-gutsy/
После того, как у вас есть китайский шрифт в вашей ОС, теперь мы можем зарегистрировать ваш шрифт в лаборатории отчетов. Примечание: ваша лаборатория отчетов должна быть версии 2.0 выше. Вы можете перейти по этой ссылке: http://forum.openerp.com/forum/topic1943.html Но я делаю это немного по-другому
Сначала создайте папку с именем «fonts» по этому пути /usr/lib/python2.6/dist_packages/reportlab/ и поместите в нее SIMSUN.TTC.
Примечание: место, где reportlab ищет TTF-файлы, можно найти здесь: rl_config.py (вы можете найти файл в вашей файловой системе)
Во-вторых, после этого перейдите в /usr/share/pyshared/reportlab/lib/styles.py и поместите этот код ниже def getSampleStyleSheet(): (этот идентификатор исходный)
def getSampleStyleSheet_JH(): """Возвращает объект таблицы стилей для китайского языка""" stylesheet = StyleSheet1()
stylesheet.add(ParagraphStyle(name='Normal',
fontName='Simsun',
fontSize=10,
leading=12)
)
stylesheet.add(ParagraphStyle(name='BodyText',
parent=stylesheet['Normal'],
spaceBefore=6)
)
stylesheet.add(ParagraphStyle(name='Italic',
parent=stylesheet['BodyText'],
fontName = 'Simsun-Italic')
)
stylesheet.add(ParagraphStyle(name='Heading1',
parent=stylesheet['Normal'],
fontName = 'Simsun-Bold',
fontSize=18,
leading=22,
spaceAfter=6),
alias='h1')
stylesheet.add(ParagraphStyle(name='Title',
parent=stylesheet['Normal'],
fontName = 'Simsun-Bold',
fontSize=18,
leading=22,
alignment=TA_CENTER,
spaceAfter=6),
alias='title')
stylesheet.add(ParagraphStyle(name='Heading2',
parent=stylesheet['Normal'],
fontName = 'Simsun-Bold',
fontSize=14,
leading=18,
spaceBefore=12,
spaceAfter=6),
alias='h2')
stylesheet.add(ParagraphStyle(name='Heading3',
parent=stylesheet['Normal'],
fontName = 'Simsun-BoldItalic',
fontSize=12,
leading=14,
spaceBefore=12,
spaceAfter=6),
alias='h3')
stylesheet.add(ParagraphStyle(name='Bullet',
parent=stylesheet['Normal'],
firstLineIndent=0,
spaceBefore=3),
alias='bu')
stylesheet.add(ParagraphStyle(name='Definition',
parent=stylesheet['Normal'],
firstLineIndent=0,
leftIndent=36,
bulletIndent=0,
spaceBefore=6,
bulletFontName='BoldItalic'),
alias='df')
stylesheet.add(ParagraphStyle(name='Code',
parent=stylesheet['Normal'],
fontName='Courier',
fontSize=8,
leading=8.8,
firstLineIndent=0,
leftIndent=36))
В-третьих, перейдите в /opt/openerp61/server/openerp/report/render/rml2pdf/init.py и измените на это:
из trml2pdf импортировать parseString, parseNode
из reportlab.lib.fonts импортировать addMapping
из reportlab.pdfbase импортировать pdfmetrics
из reportlab.pdfbase.ttfonts импортировать TTFont
из reportlab.pdfbase.cidfonts импортировать UnicodeCIDFont, findCMapFile
pdfmetrics.registerFont(TTFont('SimSun','SIMSUN.TTC')) # имя шрифта, которое вы указываете здесь, должно точно совпадать с тем, которое вы копируете в папку «fonts» на шаге 1
для имени в ['SimSun']:
addMapping(имя лица, 0, 0, имя лица) #normal
addMapping(имя лица, 0, 1, имя лица) #italic
addMapping(имя лица, 1, 0, имя лица) #жирный
addMapping(facename, 1, 1, facename) #курсив и полужирный
Далее перейдите в /opt/openerp61/server/openerp/report/render/rml2pdf/trml2pdf.py
• Измените кодировку с «cp1252» на «UTF-8» • Добавьте следующий код:
из reportlab.lib.enums импортировать TA_LEFT, TA_RIGHT, TA_CENTER, TA_JUSTIFY из reportlab.lib.styles импортировать getSampleStyleSheet_JH, ParagraphStyle, StyleSheet1
• Замените все «getSampleStyleSheet» на «getSampleStyleSheet_JH».
Последний шаг: перезапустите службу openerp ДВАЖДЫ. Примечание. Если при перезапуске службы открывателя появляется сообщение «start-stop-daemon: warning: failed to kill 5445: No such process», вы можете прокомментировать код на шаге 3 и узнать что за ошибка, и снова раскомментируйте, но не забудьте снова перезапустить службу
person
jenny.huang
schedule
19.09.2013