在laravel 5.4中使用DomPdf在PDF创建期间显示希伯来字符

时间:2017-10-16 05:57:50

标签: laravel pdf laravel-5.4 dompdf

我为没有尝试任何事情而道歉。

我想在Larave DOMPDF创建的PDF中显示希伯来字符。

我不知道该做什么以及如何实现这一目标。我做了一些搜索,但没有运气。 这是我加载PDF文件的方式

PDF::loadView('pdf', ['leadInfo'=>$leadInfo,'leadByContinent'=>$leadByContinent,'leadByStatus'=>$leadByStatus])
                ->save(public_path().'/leadPdfs/'.$leadPdfName);

PDF刀片文件是

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<!-- Meta, title, CSS, favicons, etc. -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">

</head>
<body>

<table class="lead" cellspacing="0" width="100%" style="font-size: 12px; font-family: 'Arial, Helvetica Neue, Helvetica, sans-serif';">
     <thead>
        <tr>
           <th width="10%" style="font-weight: bold;">Date</th>
           <th width="15%" style="font-weight: bold;">Name</th>
           <th width="20%" style="font-weight: bold;">Details</th>
           <th width="10%" style="font-weight: bold;">Contact Origin</th>
           <th width="15%" style="font-weight: bold;">Status</th>
           <th width="10%" style="font-weight: bold;">Comment</th>
           <th width="10%" style="font-weight: bold;">Country</th>
        </tr>
     </thead>
     <tbody>
     <?php
        foreach($leadInfo as $k=>$v){ 

        $continent = getAllContinentName($v->country);
        if(strtolower($continent) == strtolower("Asia")){
          $backGround = "#FFB300";
        } else if(strtolower($continent) == strtolower("Africa")){
          $backGround = "#FFB300";
        } else if(strtolower($continent) == strtolower("North America")){
          $backGround = "#009792";
        } else if(strtolower($continent) == strtolower("South America")){
          $backGround = "#FF7E00";
        } else if(strtolower($continent) == strtolower("Antarctica")){
          $backGround = "#15E6E8";
        } else if(strtolower($continent) == strtolower("Europe")){
          $backGround = "#0074FF";
        } else if(strtolower($continent) == strtolower("Australia")){
          $backGround = "#05A900";
        } else {
          $backGround = "#FFFFFF";
        }

        if($v->email_status_id == 10){
          $statusBackGround = "#a9d18d";
        } else if($v->email_status_id == 11){
          $statusBackGround = "#ff0000";
        } else if($v->email_status_id == 12){
          $statusBackGround = "#b3c6e7";
        } else if($v->email_status_id == 13){
          $statusBackGround = "#c09200";
        } else if($v->email_status_id == 14){
          $statusBackGround = "#ffff00";
        } else {
          $statusBackGround = "#FFFFFF";
        }

     ?>
        <tr>
           <td> {{ Carbon\Carbon::parse($v->created_date)->formatLocalized('%d %b %Y') }} </td>
           <td>{{ $v->name }}</td>
           <td>{{ mb_substr($v->message, 0, 300) }}</td>
           <td>{{ $v->contact_origin }}</td>
           <td style="color:black; background-color: {{ $statusBackGround }}" >{{ $v->status_name }}</td>
           <td>{{ $v->comment }}</td>
           <td style="color:black; background-color: {{ $backGround }}" >{{ getAllCountryName($v->country) }}</td>
        </tr>
     <?php  } ?>
     </tbody>
  </table>   

</body>
</html>

,结果为enter image description here

目前,它显示?????而不是希伯来字符。

额外信息:数据库中的数据是希伯来语,因此我只需获取它并将其放入PDF刀片文件中。

如果有人在这方面向我提出任何建议,那就太好了。

我正在使用Laravel 5.4。

1 个答案:

答案 0 :(得分:1)

我通过将font-family值替换为https://github.com/dompdf/dompdf/wiki/UnicodeHowTo#load-a-font-supporting-your-characters-into-dompdf中描述的firefly, DejaVu Sans, sans-serif来解决了这个问题。

因为 DejaVu字体,支持多种字符。如果DejaVu字体不支持文档中的字符,则 TrueType 字体将起作用。