2016-05-12 58 views
3

我使用dompdf将php页面保存为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

这是我的代码。我无法找到dompdf_config.inc.php或dompdf_config.custom.inc.php设置“DOMPDF_UNICODE_ENABLED”为真

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(); 
+0

也许您需要下载这些文件。我不知道,只是凭直觉猜测。 –

+0

下载这些文件后,我应该在哪里放置@LajosArpad?我的意思是哪个地址? – HosSeinM

+0

看来你需要把自定义配置文件放到根文件夹中:https://github.com/rposborne/gravityformspdf/blob/master/dompdf/dompdf_config.custom.inc.php –

回答

1

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

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

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

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

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

由于您使用的是0.7。0(刚刚发布)在互联网上大量的信息可能会过时,所以你可能想如何使用它念起来:


最后,DOMPDF包括字体(幻觉记忆),可以支持你的角色。尝试将以下内容添加到样式表中,以便在自定义字体不起作用的情况下进行回退:

* { 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

我应该把这个常量放在哪里?你的意思是在我的主代码中吗?我没有做任何改变。 – HosSeinM

+0

这是我的代码:<?php require(“dompdf/autoload.inc.php”); define(“DOMPDF_UNICODE_ENABLED”,true); 使用Dompdf \ Dompdf; 使用Dompdf \ Options; $ dompdf = new Dompdf(); $ dompdf-> loadHtml(mb_convert_encoding(“فارسی”,'HTML-ENTITIES','UTF-8')); $ dompdf-> setPaper('A4','Portrait'); $ dompdf-> render(); $ dompdf-> stream(); – HosSeinM

+0

你想用这个教程在你使用之前给DOMPDF添加一个字体 http://stackoverflow.com/questions/8968627/how-to-make-dompdf-support-unicode-font-step-by-step 你可以在这里使用更详细的教程: https://github.com/dompdf/dompdf/wiki/UnicodeHowTo – Yeti

相关问题