2017-10-16 6 views
0

Je m'excuse de ne rien essayer.Afficher le caractère hébreu lors de la création du PDF avec DomPdf dans laravel 5.4

Je veux montrer le caractère hébreu dans le PDF qui est créé par Larave DOMPDF.

Je ne sais pas quoi faire et comment y parvenir. J'ai fait quelques recherches mais pas de chance. voilà comment je charger le fichier PDF

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

Et le fichier lame PDF est

<!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> 

et le résultat est enter image description here

Pour l'instant, il montre ????? au lieu de caractère hébreu.

Extra Info: Les données de la base de données sont dans la langue hébraïque, donc je viens de le récupérer et le mettre dans le fichier lame PDF.

Ce serait génial si quelqu'un me suggère quelque chose à ce sujet. Je utilise Laravel 5.4.

+1

Israël est un pays qui parle plusieurs langues. Demandez-vous comment afficher les caractères hébreux dans vos fichiers PDF? Montrez votre code et le code HTML que vous tentez de convertir en pdf, y compris la police que vous utilisez (qui doit supporter les glyphes hébreux). Montrez que vous avez au moins lu sur le support unicode dans dompdf ... – sisve

+0

Oui, moins de connaissances sur Israël. Oui, j'essaie de montrer la langue hébraïque. –

+0

Okay. 1) Mettez à jour votre question pour clarifier que vous posez des questions sur la langue hébraïque, pas sur le pays d'Israël. 2) Mettez à jour votre question et ajoutez suffisamment de code source pour que nous puissions reproduire votre problème afin de le déboguer, y compris le code et le code HTML. – sisve

Répondre

1

J'ai résolu le problème en remplaçant la valeur font-family par firefly, DejaVu Sans, sans-serif qui est décrite dans https://github.com/dompdf/dompdf/wiki/UnicodeHowTo#load-a-font-supporting-your-characters-into-dompdf.

Parce que les polices DejaVu, prend en charge un large éventail de caractères. Si les polices DejaVu ne prennent pas en charge vos caractères dans votre document, la police TrueType fonctionnera.

+1

Vos lettres hébraïques ne sont-elles pas inversées? i.e םולש au lieu de שלום – Rony