return view('ビューファイル名'); // デバッグ時の確認用。PDF出力時はコメントアウトする
// PDF出力時
$pdf = PDF::loadView('ビューファイル名');
return $pdf->stream();
おじさんもハマっていたのですが、原因はパスの指定方法にありました。
<meta charset="utf-8">
<link rel="stylesheet" href="../css/reset.css">
<link rel="stylesheet" href="../css/pdf.css">
</head>
デバッグ作業時に出力したHTMLでは、問題なく css を認識してくれたのですが、PDF出力すると css を認識してくれませんでした。
もしかすると、domPDFはパスの認識方法が違うのでは?
と考えました。
<meta charset="utf-8">
<link rel="stylesheet" href="{{asset('/css/reset.css')}}">
<link rel="stylesheet" href="{{asset('/css/pdf.css'}}">
</head>
asset() は、public ディレクトリのパスを返すヘルパー関数です。
これはイケるかと思ったのですが、おじさんの環境ではタイムアウトしてしまいました。
うまくいった例
うまく css を認識してくれたのは、下記のような記載です。
<!DOCTYPE html>
<meta charset="utf-8">
/* HTMLデバッグ時の確認用
<link rel="stylesheet" href="../css/reset.css">
<link rel="stylesheet" href="../css/pdf.css">
<link rel="stylesheet" href="{{public_path('css/reset.css')}}"> //
<link rel="stylesheet" href="{{public_path('css/pdf.css')}}">
</head>
pubic_path() は、asset() 同様、public ディレクトリのパスを返すヘルパー関数ですが、asset() がURLを返すのに対して、pubic_path() は完全パスを返します。
本記事の例では、以下の値を返します。
public_path('css/reset.css') ⇒/home/laravel/public/css/reset.css
public_path('css/pdf.css') ⇒ /home/laravel/public/css/pdf.css
domPDF を使用する際、スタイルシートのパスは public_path() ヘルパー関数を使用しましょう。
以上、参考になればうれしいです。