2017-05-16 35 views
1

GoogleフォントをLaravel DomPDF 0.7。*で使用しようとしていますが、表示に時間がかかります。実際、Googleフォントだけでなく、カスタムフォントを使用することはできません。Laravel DomPDF Googleフォントが読み込まれない

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

これは、手書きのフォントであるはずです。

enter image description here

dompdf.php設定ファイルでは、フォントdirとフォントキャッシュは両方とも書き込み可能です。

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

この '文字間隔を試してください:1pxの;'それが正しいフォントではありませんQuỳnhNguyễ[email protected] '.signature' CSS –

+0

で、文字間隔が問題 – Wasim

+0

ではありませんあなたが最新のバージョンにアップデートしてみてください可能性があり、それがそれを修正するかどうかを確認してください。現在のバージョンは '0.8.0'です – Sandeesh

答えて

0

フォントの場所回答

私はこれが私のサーバー上でフォントを持つことで仕事を得ることができた。ここで

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

は、コントローラのコードです。

フォントがどこにあるかをDomPDFに伝える必要があります。

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(); 
} 

フォントをstorage/fontsにダウンロードしてください。私はLaravelでそれを統合するDOMPDF Wrapper for Laravel 5を使用

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

。それはずっと簡単です。

タイプミスの回答は

あなたはjsfiddleを参照してください!important'Caveat', cursive; !important;から削除する必要があります。余分なセミコロンがあります。

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

なぜ構文エラーがあったのか分かりませんが、それは問題ではありません。同じ問題。 – Wasim

関連する問題