RML レポートで漢字を印刷できるようにするにはどうすればよいですか?
- 中国語のフォント (Simsun、Simhei、WenQuanYiZhenHei) があることを確認してください。
- フォントを RML ライブラリと設定に埋め込むか、「RML で使用するフォントを登録してください」と表示される場合があります</li>
- RML レポートの fontName を変更します (slow_moving_report.rml など)。
始めましょう :
この場合、動きの遅いレポートで Simsun フォントを使用したい
(参考:Ubuntu 10.04でこれを行います)
中国語のフォントを取得するにはどうすればよいですか?
手動またはターミナル経由でインストールできます
• 手動でインストールする場合
- Windows OS で C:\WINDOWS\Fonts に移動します。
- コピータイプのフォント (.ttf / .ttc)
- Ubuntu OS にコピーする
- フォントをダブルクリックしてインストール
• ターミナル経由でインストールする場合は、次のリンクを参照できます: http://xgwang.wordpress.com/2007/11/25/set-up-chinese-fonts-using-microsofts-simsunttf-in-ubuntu- 71-ガッツ/
OS に中国語フォントを追加したら、レポート ラボにフォントを登録できます。注 : レポート ラボは上記のバージョン 2.0 である必要があります。次のリンクを参照してください: http://forum.openerp.com/forum/topic1943. html
しかし、私は少し異なる方法でそれを行います
まず、このパス /usr/lib/python2.6/dist_packages/reportlab/ に「fonts」というフォルダーを作成し、その中に SIMSUN.TTC を入れます。
注 : reportlab が TTF ファイルを検索する場所は、ここにあります: rl_config.py (ファイル システムでファイルを検索できます)
次に、/usr/share/pyshared/reportlab/lib/styles.py に移動し、このコードを def getSampleStyleSheet(): の下に配置します (これは元の id です)
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))
3 番目に、/opt/openerp61/server/openerp/report/render/rml2pdf/init.py に移動し、次のように変更します。
from trml2pdf import parseString, parseNode
reportlab.lib.fonts から import addMapping
reportlab.pdfbase から pdfmetrics をインポート
reportlab.pdfbase.ttfontsからTTFontをインポート
reportlab.pdfbase.cidfonts からインポート UnicodeCIDFont、findCMapFile
pdfmetrics.registerFont(TTFont('SimSun','SIMSUN.TTC')) # ここに入力するフォント名は、手順 1 で「fonts」フォルダにコピーしたものとまったく同じでなければなりません
['SimSun'] の顔名:
addMapping(顔名, 0, 0, 顔名) #normal
addMapping(顔名, 0, 1, 顔名) #斜体
addMapping(顔名, 1, 0, 顔名) #bold
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」に置き換えます</p>
最後のステップで openerp サービスを 2 回再起動します 注 : オープナー サービスを再起動したときに、「start-stop-daemon: warning: failed to kill 5445: No such process」というメッセージが表示された場合は、ステップ 3 のコードにコメントを付けて確認してください。どのようなエラーが発生し、再びコメントを外しましたが、サービスを再起動することを忘れないでください