dompdf特殊字符

时间:2011-02-27 21:20:01

标签: dompdf

我的html-to-pdf转换成功,但没有特殊字符。

下面只是我想要显示的一个特殊字符,它显示在我的Mac上的浏览器中,当我把它简单地放在一个html文档中时。 (但不是在我的窗户上)

<?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)提交pdf时的问号。 我知道在特殊字符方面记录了很多问题,但我想我会尝试使用我实际使用的代码。

如果DomPdf不是推荐的html-to-pdf转换工具,我会接受任何其他建议!

5 个答案:

答案 0 :(得分:16)

转换UTF-8 html页面时,我遇到过DOMPDF问题。 我只是通过添加

解决了这个问题
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

之间&lt;头&gt;标签。 如果你用你的编码类型设置它可能是一个替代方案。

以下评论中的重要提示:请勿在同一pdf实例上使用 stream() output()方法。如果你这样做不会工作。

答案 1 :(得分:6)

DOMPDF Latin Turkish(Türkçe)char问题,我的解决方案%100 Work。

服务器需求控制: Server requirenment control

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文件夹。 Download font files Link 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&gt;例如enter image description here http://limitsizbilgi.com/pdf/dompdf-chartest.pdf

答案 2 :(得分:4)

在网上尝试所有解决方案之后。我可以在不修改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>

答案 3 :(得分:3)

0.6.x之前的任何内容都限制了对iso-8859-1编码之外的字符的支持。使用适当的Windows ANSI字符代码(&#0128;)支持0.5.x欧元,但是你必须跳过一些PDF编码环。

0.6.0版本更好地支持“特殊”字符。默认编码基于Windows ANSI(PDF 1.3规范认可的少数几种之一)。您可以通过加载基于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>€</p>
</body>
</html>

(或懒惰只是在你的测试中使用欧元实体&euro;

有一份文件概述了enable Unicode support in DOMPDF所需的步骤。 另请阅读overview of how to load fonts的答案。

答案 4 :(得分:1)

您必须使用其他字符集。例如dejavu Sans Mono。添加您的代码

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

我也在this视频中提到过它。