Laravel で PDF 生成に便利に使える Laravel Snappy だけど…。ヘッダ、フッタに日本語(マルチバイト文字)を使おうとすると該当部分が表示されないという問題が生じた。
普通ならこうする。
1 2 3 |
$pdf = \PDF::loadView('viewname'); $pdf->setOption('encoding', 'utf-8'); $pdf->setOption('header-left', 'header も指定できる'); |
でもこれじゃあダメなんである。
ググってみると同じ問題に直面した海外ニキがいて、その投稿によるとheader-left ではなく header-html にしてHTMLを埋め込めばいいらしい。
1 2 |
// $pdf->setOption('header-left', 'header も指定できる'); $pdf->setOption('header-html', view('viewname.header')); |
viewname.header.blade.php の中身はこう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style type="text/css"> *{ padding:0; margin:0; font-size:10px; color:#000000; background-color:#ff0000; } </style> </head> <body> ほげほげ </body> </html> |
重要なのはDOCTYPE、charset=utf-8の指定、margin0の指定であった。