web-dev-qa-db-ja.com

dompdf特殊文字

Htmlからpdfへの変換は成功していますが、特殊文字では成功していません。

以下は、私が表示しようとしている特殊文字です。これは、単純にhtmlドキュメント内に配置すると、Macのブラウザーに表示されます。 (ただし、Windowsボックスにはありません)

<?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);
?>

「?」が表示され続けます(疑問符)PDFがレンダリングされるとき。特殊文字に関して文書化された問題がたくさんあることは知っていますが、実際に使用しているコードを使用して、これを試してみようと思いました。

DomPdfが推奨されるhtmlからpdfへの変換ツールでない場合は、他の推奨事項を採用します。

13
coffeemonitor

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

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

<head>タグの間。エンコーディングタイプで設定すれば、代替手段になるかもしれません。

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

17
Ricardo Martins

ネット上のすべてのソリューションを試した後。 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>
6
Raimundo Yabar

DOMPDFラテントルコ語(Türkçe)char問題、私の解決策%100動作します。

サーバー要件の制御: Server requirenment control

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

ステップ1:dompdf_config.inc.php edit to

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>例enter image description herehttp://limitsizbilgi.com/pdf/dompdf-chartest.pdf

6
Limitless isa

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

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

以下は、dompdf0.6.0以降で機能するはずです。

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

(または怠惰になるには、ユーロエンティティを使用します&euro;あなたのテストで)

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

3
BrianS

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

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

this ビデオでも触れました。

1
Metin Erbek