5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Docker + laravel-dompdfで日本語が文字化けする

Posted at

はじめに

Laravelではdompdfライブラリを使って、簡単にPDFの出力ができます。

今回はLaravelでPDF出力時に、日本語が文字化けした時の対策を簡略にまとめてみました。

実装

Controller

$pdf = PDF::loadView(
    // bladeファイル名
    'pdf',
    // PDFの中身
    ['title' => 'こんにちは', 'content' => '内容が入ります']
);

// A4サイズ、横向き
$pdf->setPaper('A4', 'landscape');

// PDFファイルをダウンロード
return $pdf->download('download.pdf');

View

<x-pdf-layout>
    @section('css') 
    <style type="text/css">
        body {
            page-break-inside: avoid;
            text-align: center;
            font-size: 3rem;
        }
    </style>
    @endsection
    <x-slot name="header">title: {{ $title }}</x-slot>
    <div>
        content: {{ $content }}
    </div>
</x-pdf-layout>

PDF

※下の空白を切り取りました。
キャプチャ.PNG

PHP Dockerfile

install Font

migmixを使用
https://mix-mplus-ipa.osdn.jp/migmix/

RUN cd  /tmp && \
    wget --trust-server-names 'https://osdn.net/projects/mix-mplus-ipa/downloads/72510/migmix-1p-20200307.zip' && \
    unzip migmix-1p-20200307.zip && \
    mkdir -p /var/www/app/public/fonts && \
    cp /tmp/migmix-1p-20200307/*.ttf \
    /var/www/app/public/fonts/ && \
    chmod 777 /var/www/app/public/fonts

View

<x-pdf-layout>
    @section('css') 
    <style type="text/css">
        /* 追加 */
        @font-face{
            font-family: migmix;
            font-style: normal;
            font-weight: normal;
            src: url("fonts/migmix-1p-regular.ttf") format('truetype');
        }
        body {
            /* 追加 */
            font-family: migmix;
            page-break-inside: avoid;
            text-align: center;
            font-size: 3rem;
        }
    </style>
    @endsection
    <x-slot name="header">title: {{ $title }}</x-slot>
    <div>
        content: {{ $content }}
    </div>
</x-pdf-layout>

PDF

キャプチャ2.PNG

さいごに

dompdfのバージョン次第、サポートしないフォントフォーマットもあるので、ご注意ください。
それが原因でフォント変更の時にだいぶ時間使いました

参考

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?