14

我有成功的 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 转换工具,我会接受任何其他建议!

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 规范认可的少数编码之一)。您可以通过加载基于 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 回答