14

I'm having successful html-to-pdf conversions, but not with special characters.

Below is just a special character I'm trying to display, which displays in browsers on my Mac, when I put it simply inside an html document. (but not on my windows box)

<?php
require_once("../dompdf_config.inc.php");
$html = '&#8364;';
$dompdf = new DOMPDF(); $html = iconv('UTF-8','Windows-1250',$html);
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("contract.pdf");
exit(0);
?>

I keep getting a "?" (question mark) when the pdf is rendered. I know there's been lots of issues documented with regards to special characters, but I thought I'd give this a try, with the code I'm actually using.

If DomPdf isn't a recommended html-to-pdf conversion tool, I'll take any other recommendations!

4

5 に答える 5

17

UTF-8 html ページを変換するときに DOMPDF で問題が発生しました。追加するだけで問題を解決しました

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

<head>タグの間。エンコーディングタイプで設定すると、代替になる可能性があります。

以下のコメントからの重要な注意:同じ pdf インスタンスでstream()およびoutput()メソッドを使用しないでください。これをするとうまくいきません。

于 2012-10-10T20:09:15.247 に答える
9

ネット上のすべてのソリューションを試した後。dompdfを変更せずに解決できました。問題はhtmlコンテンツにありました。もちろん、正しい適切な HTML 構造を追加し、フォントを設定するだけで済みました。v0.6.0 および v0.6.1 でテスト済み。ここにコードを残します

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
  <meta http-equiv="Content-Type" content="charset=utf-8" />
  <style type="text/css">
    * {
      font-family: "DejaVu Sans Mono", monospace;
    }
  </style>
</head>

<body>your content ćčžšđ...</body>

</html>
于 2015-04-08T19:09:24.543 に答える
8

DOMPDF ラテン トルコ語 (Türkçe) 文字の問題、私の解決策 %100 うまくいきました。

サーバー要件の制御: サーバー要件の制御

Char 'dejavu sans mono' (トルコ語サポート) または:

ステップ 1: dompdf_config.inc.php の編集

mb_internal_encoding('UTF-8');
def("DOMPDF_UNICODE_ENABLED", true);

ステップ 2: lib/fonts/dompdf_font_family_cache.dist.php を編集してコードを追加します。

'futural' => 
  array (
    'normal' => DOMPDF_FONT_DIR . 'FUTURAL',
    'bold' => DOMPDF_FONT_DIR . 'FUTURAL',
    'italic' => DOMPDF_FONT_DIR . 'FUTURAL',
    'bold_italic' => DOMPDF_FONT_DIR . 'FUTURAL',
  ),

ステップ 3: doqnload フォント ファイルを lib/fonts フォルダーにコピーします。 フォントファイルをダウンロード リンク http://www.2shared.com/file/k6hdky_b/fonts.html

ステップ 4: コードの編集例:

require_once("dompdf_config.inc.php");
$html='<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style>
    html{padding:-30px;}
    body { font-family: futural; }
</style>
</head><body>';
$html.='ı İ Ş ş ç Ç ö Ö ü Ü ğ Ğ ÿ þ ð ê ß ã Ù Ñ È »  ¿ İsa Şahintürk';
$html.='</body></html>';
if ( isset( $html ) ) {
    if ( get_magic_quotes_gpc() )
    $html = stripslashes($html);
    $old_limit = ini_set("memory_limit", "16M");
    $dompdf = new DOMPDF();
    $dompdf->load_html($html,'UTF-8');
    $dompdf->set_paper('a4', 'portrait');// or landscape
    $dompdf->render();
    $dompdf->stream("limitless.pdf");
exit(0);
}

終了 仕上げ PDF > 例ここに画像の説明を入力 http://limitsizbilgi.com/pdf/dompdf-chartest.pdf

于 2013-07-04T03:57:23.153 に答える
4

別の文字セットを使用する必要があります。たとえば dejavu Sans Mono。コードを追加

<style>
*{
    font-family:"DeJaVu Sans Mono",monospace;
}
</style>

この動画でも言いました。

于 2016-09-18T09:57:05.020 に答える
3

0.6.x より前のバージョンでは、iso-8859-1 エンコーディング以外の文字のサポートが制限されていました。ユーロは 0.5.x で適切な Windows ANSI 文字コード ( &#0128;) を使用してサポートされていますが、それ以外の場合は、いくつかの PDF エンコーディング フープをジャンプする必要があります。

0.6.0 リリースでは、「特殊」文字のサポートが向上しています。デフォルトのエンコーディングは、Windows ANSI (PDF 1.3 仕様で認識されている数少ないものの 1 つ) に基づいています。Unicode ベースのフォントをロードし、dompdf で Unicode を有効にして、ドキュメントでそのエンコーディングを指定することにより、より優れた文字サポートを有効にすることができます。

以下は、dompdf 0.6.0 以降で動作するはずです。

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
  <p>€&lt;/p>
</body>
</html>

&euro;(または、テストでユーロエンティティを使用するだけです)

DOMPDF で Unicode サポートを有効にするために必要な手順を概説したドキュメントがあります。さらに、フォントのロード方法の概要については、この回答をお読みください。

于 2011-03-01T19:02:25.180 に答える