我找不到dompdf_config.inc.php或dompdf_config.custom.inc.php来设置“DOMPDF_UNICODE_ENABLED”为true

问题描述 投票:3回答:3

我使用dompdf通过php将html页面保存为pdf。我在我的html页面(实际上是php页面)中使用波斯语字符,但是当我试图将其保存为pdf时,导出只是看起来像'?????' :(。我搜索了所有的网,我在“dompdf_config.inc.php”或“dompdf_config.custom.inc.php”文件中找到了unicode字符https://github.com/dompdf/dompdf/wiki/UnicodeHowTo#configure-dompdf-for-unicode-support的配置。但问题是我找不到这样的文件我所有的dompdf文件夹和我的所有文件系统。请有人告诉我它在哪里或我必须做什么。还有一点是我必须使用dompdf,因为它具有出色的CSS兼容性。谢谢。 这是出口。 http://i.stack.imgur.com/nYAzW.png 这是我的代码。

require("dompdf/autoload.inc.php");
use Dompdf\Dompdf;
$dompdf = new Dompdf();
$dompdf->loadHtml("<html><head>
<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\">

<link rel=\"stylesheet\" type=\"text/css\" href=\"styles/scorestyle.css\">

</head>
<body><div>
<div id=\"showscorediv\"><table><tbody><tr class=\"scoresubject\"><th colspan=\"2\">کارنامه ارزیابی</th></tr><tr class=\"scorecategory\"><th>شاخص ها</th><th>امیتاز ها</th></tr><tr><td><span class=\"level_0\">شاخص های کیفی</span></td><td class=\"scoretd\">62</td></tr><tr><td><span class=\"level_1\">شاخص های مرتبط با تیم کاری</span></td><td class=\"scoretd\">10</td></tr><tr><td><span class=\"level_1\">شاخص های مرتبط با محصول</span></td><td class=\"scoretd\">28</td></tr><tr><td><span class=\"level_1\">شاخص های مرتبط با بازار</span></td><td class=\"scoretd\">24</td></tr><tr><td><span class=\"level_0\">شاخص های کمی</span></td><td class=\"scoretd\">60</td></tr><tr><td><span class=\"level_1\">شاخص های تولیدی</span></td><td class=\"scoretd\">20</td></tr><tr><td><span class=\"level_1\">شاخص های درآمدی</span></td><td class=\"scoretd\">14</td></tr><tr><td><span class=\"level_1\">شاخص های هزینه ای</span></td><td class=\"scoretd\">26</td></tr><tr class=\"scoresubject\"><th>امتیاز کل</th><th>122</th></tr></tbody></table>
</div>
</div></body></html>");
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$dompdf->stream();
php pdf unicode dompdf persian
3个回答
2
投票

您似乎使用的是dompdf 0.7.0,它不再使用dompdf_config.inc.php配置文件。此版本始终启用Unicode支持。

要显示示例代码中使用的字符,您需要确保:

  1. 您正在提供支持这些字符的字体(即appears to be the case)。
  2. dompdf具有对临时目录,字体目录和字体缓存目录的读写功能。你可以使用$dompdf->set_option('option', 'value');设置它们(其中选项是tempDirfontDirfontCache)。
  3. 该字体可供dompdf访问,并采用TTF格式。
  4. 您正确地设置了内容的样式以使用您的字体。很难知道没有看到你的CSS。

仅供参考,您不能将TTF / UFM放在字体目录中。 dompdf必须记录有关字体的信息才能使用它。此外,无论如何,AFM指标文件在这种情况下都不起作用,因为它表示字体上的Windows ANSI编码。 Windows ANSI编码不支持示例中的字符。 Dompdf使用UFM指标格式进行Unicode支持。

0.7.0之前不再包含先前版本的dompdf中包含的实用程序。只要您满足使用@font-face声明的要求,您就不需要任何外部实用程序。但是,如果需要,您可以在dompdf-utils project中找到兼容版本的load_font.php脚本。

由于您使用的是0.7.0(刚刚发布),因此Internet上的大量信息可能已过时,因此您可能需要了解如何使用它:


最后,dompdf包含一个可以支持你的角色的字体(DejaVu)。尝试将以下内容添加到样式表中,以便在自定义字体不起作用时进行后备:

* { font-family: BZar_0, DejaVu Sans, sans-serif; }

0
投票

要设置任何DOMPDF选项,您必须定义命名常量。所有可用选项都可以在这里找到:http://pxd.me/dompdf/www/setup.php

要启用波斯语字符,您基本上必须启用unicode支持。

define("DOMPDF_UNICODE_ENABLED", true);

您可能还想设置DOMPDF_FONT_DIRDOMPDF_DEFAULT_FONT,以确保您使用的字体支持unicode字符。


0
投票

我刚刚添加了来自dompdf 0.6.2版本的dompdf_config.inc.php和dompdf_config.custom.inc.php文件,除了将autoload.inc.php和functions.inc.php的dir包含到我的dompdf 0.8。*之外它还可以。

© www.soinside.com 2019 - 2024. All rights reserved.