2017-05-16 5 views
1

Der Versuch, Google Fonts mit Laravel DomPDF 0.7. * Zu verwenden, aber es fällt mir schwer, sie zu zeigen. Tatsächlich kann ich keine benutzerdefinierten Schriftarten zum Funktionieren bringen, nicht nur Google Fonts.Laravel DomPDF Google Schriftarten werden nicht geladen

<!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="text/html; charset=utf-8"> 
     <link href="https://fonts.googleapis.com/css?family=Caveat" rel="stylesheet"> 
     <style type="text/css"> 

      .signature { 
       font-family: 'Caveat', cursive !important; 
       font-size: 30px; 
      } 
     </style> 
    </head> 

    <body> 
     <p class="signature">Name</p> 
    </body> 
</html> 

Dies ist, was sich zeigt, es soll eine Handschrift Schriftart sein.

enter image description here

In dompdf.php config-Datei, die Schriftart dir und Font-Cache sind beide beschreibbar.

"DOMPDF_FONT_DIR" => storage_path('app/tmp/'), 
"DOMPDF_FONT_CACHE" => storage_path('app/tmp/'), 

ist der Controller-Code:

public function download(Request $request, string $contractKey) 
{ 
    $item = Item::findOrFail($contractKey); 

    $body = @$item->contract; 

    $pdf = PDF::loadView('pdf.contract', [ 
     'body' => $this->cleanContract($body), 
     'docId' => md5($item->id), 
     'item' => $item, 
     'ip' => $ip = @$request->ips()[1] ?: $request->ip(), 
    ]); 

    $pdf->output(); 
    $dom_pdf = $pdf->getDomPDF(); 

    $canvas = $dom_pdf->get_canvas(); 
    $canvas->page_text($canvas->get_width() - 70, $canvas->get_height() - 30, "Page {PAGE_NUM} of {PAGE_COUNT}", null, 10, [0, 0, 0]); 


    return $pdf->stream(); 
} 
+0

Bitte versuchen, dieses 'letter-spacing: 1px;' 'bei .signature' CSS –

+0

@ QuỳnhNguyễn ist es nicht die richtige Schriftart, der Buchstabenabstand ist nicht das Problem – Wasim

+0

Sie versuchen, auf die neueste Version zu aktualisieren konnten und sehen, ob das es behebt. Die aktuelle Version ist '0.8.0' – Sandeesh

Antwort

0

Font Lage Antwort

Ich habe dies nur in der Lage gewesen zu erhalten, indem Sie die Schriften auf meinem Server zu arbeiten.

Sie müssen DomPDF mitteilen, wo sich die Schriftarten befinden.

public function download(Request $request, string $contractKey) 
{ 
    $item = Item::findOrFail($contractKey); 

    $body = @$item->contract; 

    $pdf = PDF::loadView('pdf.contract', [ 
     'body' => $this->cleanContract($body), 
     'docId' => md5($item->id), 
     'item' => $item, 
     'ip' => $ip = @$request->ips()[1] ?: $request->ip(), 
    ]); 

    $pdf->output(); 
    $dom_pdf = $pdf->getDomPDF(); 

    // set font dir here 
    $dom_pdf->set_option('font_dir', storage_path('fonts/')); 

    $canvas = $dom_pdf->get_canvas(); 
    $canvas->page_text(
     $canvas->get_width() - 70, 
     $canvas->get_height() - 30, 
     "Page {PAGE_NUM} of {PAGE_COUNT}", null, 10, [0, 0, 0]);  
    return $pdf->stream(); 
} 

Laden Sie die Schriftarten unter storage/fonts herunter.

<!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="text/html; charset=utf-8"> 
     <style type="text/css"> 

      .signature { 
       font-family: 'Caveat', cursive; 
       font-size: 30px; 
      } 
     </style> 
    </head> 

    <body> 
     <p class="signature">Name</p> 
    </body> 
</html> 

Ich benutze DOMPDF Wrapper for Laravel 5 es mit Laravel zu integrieren. Es ist viel einfacher.

Typo Antwort

Sie müssen die !important von 'Caveat', cursive; !important;jsfiddle sehen entfernen. Es gibt ein zusätzliches Semikolon.

<!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="text/html; charset=utf-8"> 
     <link href="https://fonts.googleapis.com/css?family=Caveat" rel="stylesheet"> 
     <style type="text/css"> 

      .signature { 
       font-family: 'Caveat', cursive; 
       font-size: 30px; 
      } 
     </style> 
    </head> 

    <body> 
     <p class="signature">Name</p> 
    </body> 
</html> 
+0

Nicht sicher, warum der Syntaxfehler dort war, aber das ist auch nicht das Problem. Gleicher Fehler. – Wasim

Verwandte Themen