2009-06-13 8 views
10

私はDOMPDFライブラリを使用してPDFで請求書を作成しています。この文書はフランス語、ロシア語、英語のいずれでもかまいませんが、ロシア語の文字の印刷には問題があります。キリル文字のDOMPDF問題

まず、私はUTF-8エンコーディングを使用しようと変換するHTMLページの先頭にmetaタグを置い:

<メタHTTP-当量= "Content-Typeの" コンテンツ=」 text/html; charset = utf-8 "/ >

しかし、これは機能しませんでした。

次に、このmetaタグをBODYタグの中に挿入して、フランス語文字の問題を解決しました。

しかし、ロシア語の文字はまだ動作しません。私はまた、ロシアの文字をHTMLエンティティに変換しようとしましたが、それも機能しません。

私は、バックエンドとしてPDFLibではなく、R & OS CPDFクラスを使用しています。

誰でも手助けできますか?

+0

あなたの質問にもっと注意を喚起したい場合は、この情報を新しい情報で更新してください。正確な重複を投稿しないでください。 –

+0

よろしくお願いいたします。 –

+1

なぜこのコミュニティウィキは世界ですか?それは優れた答えで具体的な質問です。 – raveren

答えて

7

フォントのデフォルトではdompdfが使用されています(つまり、すべてのユニコード文字は含まれていません)。通常はarialuni.ttfが必要です。 ItをMS Pゴシックするフォントを設定 実行PHPのload_font.php DOMPDFディレクトリの 'ゴシック' ARIALUNI.TTF、ARIALUNI.TTF https://code.google.com/p/ipwn/downloads/detail?name=arialuni.ttf

+0

あなたの答えをありがとう。 –

+1

リンクが壊れています – Bulat

+1

リンクが機能していません。 – Sadikhasan

0

ダウンロード:あなたはhttp://chernev.ru/dompdf.rar {リンク切れ}

更新リンクにローカライズされたロシア語版をダウンロードすることができます)

+1

Arialuniのファイルサイズが22 MBで、1ページのPDFを生成したいのでDownvoteそれは長い時間がかかり、PDFのファイルサイズが大きくなります(私の場合は20MB)。 10ページのPDFを生成すると無限のプロセッサ時間がかかり、実際には結果を見ることができません。軽量フォントを使用する方が良いです。 –

7

受け入れられた回答リンクが壊れており、DOMPDFの古いバージョンが含まれています。

DOMPDF 0.6でユニコード記号を使用するには、既存のフォントを使用するか独自のフォントを作成する2つの方法があります。

  1. Downloadアーカイブおよび抽出:

    • 使用すると、(DOMPDF 0.6に適用)フォントを存在していました。

    • dompdfのフォントフォルダ/dompdf/lib/fonts/で抽出したファイルをコピーします。
    • dompdf_font_family_cache.dist.phpをスニペット1で編集してください。
    • CSSでの使用font-family: times;

スニペット1:

/* ... */ 
'times' => array (
    'normal' => DOMPDF_FONT_DIR . 'times', 
    'bold' => DOMPDF_FONT_DIR . 'timesbd', 
    'italic' => DOMPDF_FONT_DIR . 'timesi', 
    'bold_italic' => DOMPDF_FONT_DIR . 'timesbi' 
), 
'times-roman' => array (
    'normal' => DOMPDF_FONT_DIR . 'times', 
    'bold' => DOMPDF_FONT_DIR . 'timesbd', 
    'italic' => DOMPDF_FONT_DIR . 'timesi', 
    'bold_italic' => DOMPDF_FONT_DIR . 'timesbi' 
), 
/* ... */ 

  • 独自のTTFフォントを使用したい場合(たとえば、Arial.ttf):

    1. ラン:ttf2afm -o Arial.afm Arial.ttf。 (私はUbuntuでやった)
    2. 実行:ttf2ufm -a -F Arial.ttf。 (WindowsではexeをUFPDFから実行しましたが、/dompdf/lib/ttf2ufm/bin/ttf2ufm.exeを使用できます)
    3. /dompdf/lib/fonts/のファイルをコピーしてください。
    4. dompdf_font_family_cache.dist.phpスニペット2
    5. CSSでの使用font-family: arial;

スニペット2:4つの手順は、上記の問題を解決できなかった私にとって

/* ... */ 
'arial' => array (
    'normal' => DOMPDF_FONT_DIR . 'Arial', 
    'bold' => DOMPDF_FONT_DIR . 'Arial', 
    'italic' => DOMPDF_FONT_DIR . 'Arial', 
    'bold_italic' => DOMPDF_FONT_DIR . 'Arial' 
) 
/* ... */ 
0

。 はそれに加えて、DOMPDFは、ANSI(ISO)に作成されたPDFファイルを変換し あなたは、チェックボックスを使用しDOMPDFのUnicodeモードをダニオプションページに http://domain.com/admin/settings/print/pdf

これを無効にする必要があります。これにより、UTF-8/Unicodeでファイルを作成することが強制されます。

ウェブ設定は、デフォルトでdompdf_config.inc.phpの設定よりも優先されます。

4

あなたはDejaVuフォントを使用するかどうかを確認することができますキリル文字

そしてDejaVu TrueTypeフォント

は、デフォルトではDOMPDFにまともなユニコード文字のカバレッジを与えるためにプリインストールされています。 DejaVuフォントを使用するには、スタイルシートのフォントを参照してください。 body {font-family:DejaVu Sans; }(DejaVu Sansの場合)。

DOMPDFはDejaVuフォントは、あなたはまた、dompdf_config.inc.php

def("DOMPDF_DEFAULT_FONT", "DejaVu Sans"); 
0

にデフォルトでデフフォントの変更を設定することができ

$html = "<html><head><style>body { font-family: DejaVu Sans }</style>". 
     "<body>А вот и кириллица</body>". 
     "</head></html>"; 

    $dompdf = new \DOMPDF(); 
    $dompdf->load_html($html); 
    $dompdf->render(); 
    echo file_put_contents('cyrillic.pdf', $dompdf->output()); 

はその問題を可能性が著名デフォルトに含まCSSリセット使用中、特に font:inherit;