13

DOMPDF ライブラリを使用して PDF で請求書を作成しています。このドキュメントはフランス語、ロシア語、または英語で作成できますが、ロシア語の文字を印刷するのに問題があります。

まず、UTF-8 エンコーディングを使用してmeta、変換する HTML ページの先頭にタグを配置しました。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

しかし、それはうまくいきませんでした。

meta次に、このタグをタグ内に挿入しBODYたところ、フランス語の文字の問題が解決されました。

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

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

誰でも助けることができますか?

4

7 に答える 7

13

DejaVu フォントを使用すると、キリル文字が表示されます

DejaVu TrueType フォントがプリインストールされており、デフォルトで dompdf の適切な Unicode 文字範囲を提供します。DejaVu フォントを使用するには、スタイルシートでフォントを参照します。} (DejaVu Sans の場合)。

DOMPDF には DejaVu フォントがデフォルトで含まれています

    $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());

dompdf_config.inc.phpでデフォルトでフォントの変更定義を設定することもできます

def("DOMPDF_DEFAULT_FONT", "DejaVu Sans");
于 2015-11-08T12:25:28.903 に答える
12

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

DOMPDF 0.6 で Unicode シンボルを操作するには、既存のフォントを使用するか、独自のフォントを作成するという 2 つの選択肢があります。

  • 既存のフォントを使用 (DOMPDF 0.6 に適用):
  1. アーカイブをダウンロードして抽出します。
  2. 解凍したファイルを dompdf fonts フォルダーにコピーします/dompdf/lib/fonts/
  3. dompdf_font_family_cache.dist.phpスニペット 1 で編集します。
  4. 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. (私はUFPDFの exe を使用して Windows で実行しましたが、使用できると思います/dompdf/lib/ttf2ufm/bin/ttf2ufm.exe。)
  3. Arial.*でファイルをコピーします/dompdf/lib/fonts/
  4. dompdf_font_family_cache.dist.phpスニペット 2に追加します。
  5. CSS ではfont-family: arial;.

スニペット 2:

/* ... */
'arial' => array (
    'normal' => DOMPDF_FONT_DIR . 'Arial',
    'bold' => DOMPDF_FONT_DIR . 'Arial',
    'italic' => DOMPDF_FONT_DIR . 'Arial',
    'bold_italic' => DOMPDF_FONT_DIR . 'Arial'
)
/* ... */
于 2011-10-06T09:45:44.993 に答える
8

問題は、デフォルトのdompdfが使用するフォントにあります(つまり、すべてのUnicode文字が含まれているわけではなく、現在は5000を超えています)。通常、arialuni.ttfが必要です。ローカライズされたロシア語版はhttp://chernev.ru/dompdf.rar {壊れたリンク}からダウンロードできます。

更新されたリンク:https ://code.google.com/p/ipwn/downloads/detail?name = arialuni.ttf

于 2009-11-06T11:28:39.047 に答える
0

私にとって、上記の 4 つの手順では問題は解決しませんでした。それに加えて、dompdf は作成された pdf を ANSI (ISO) に変換します。オプション ページ http://domain.com/admin/settings/print/pdfでこれを無効にする必要があります。

[dompdf の Unicode モードを使用する] チェックボックスをオンにします。これにより、強制的に UTF-8/Unicode でファイルが作成されます。

デフォルトでは、Web 設定は dompdf_config.inc.php の設定を上書きすることに注意してください。

于 2014-12-24T22:48:37.840 に答える
0

arialuni.ttf をダウンロードします php load_font.php 'Arial' arialuni.ttf を dompdf ディレクトリで実行し、フォントを arial に設定します 動作します ;)

于 2010-12-29T23:28:42.360 に答える
0

特に css-reset の使用法に問題がある可能性があることに注意してください font:inherit;

于 2016-10-19T12:36:17.597 に答える