0

ペンタホレポートデザイナーの漢字フォントについてお聞きしたいのですが

シナリオは次のようなものです: 最初のシナリオ: レポートで WenQuanYi Zen Hei フォント (中国語のフォント) を使用しています -- プレビューを印刷すると正常に動作します (漢字が表示されます) -- PDF を印刷すると動作します

レポートで Simsun フォント (中国語のフォント) を使用する 2 番目のシナリオ -- プレビューを印刷すると正常に動作します (漢字が表示されます) -- PDF を印刷すると機能しません (漢字はまったく表示されません)

  • fyi、私はubuntu 10.04を使用しており、WenQuanフォントはすでにそこにありますが、simsunフォントはubuntu OSに手動でインストールしたフォントです

誰か助けてくれませんか?pentaho などにフォントを埋め込む必要がありますか?

4

1 に答える 1

0

RML レポートで漢字を印刷できるようにするにはどうすればよいですか?

  1. 中国語のフォント (Simsun、Simhei、WenQuanYiZhenHei) があることを確認してください。
  2. フォントを RML ライブラリと設定に埋め込むか、「RML で使用するフォントを登録してください」と表示される場合があります</li>
  3. RML レポートの fontName を変更します (slow_moving_report.rml など)。

始めましょう :

この場合、動きの遅いレポートで Simsun フォントを使用したい

(参考:Ubuntu 10.04でこれを行います)

中国語のフォントを取得するにはどうすればよいですか?

手動またはターミナル経由でインストールできます

• 手動でインストールする場合

  1. Windows OS で C:\WINDOWS\Fonts に移動します。
  2. コピータイプのフォント (.ttf / .ttc)
  3. Ubuntu OS にコピーする
  4. フォントをダブルクリックしてインストール

• ターミナル経由でインストールする場合は、次のリンクを参照できます: 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 のコードにコメントを付けて確認してください。どのようなエラーが発生し、再びコメントを外しましたが、サービスを再起動することを忘れないでください

于 2013-09-19T06:53:30.197 に答える