[mPDF]htmlファイルを読み込んでテンプレートとして使用する方法

やっていく。

こんな感じ

まずHTMLファイルを用意する。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    aaaaaaaaaaa
</body>
</html>

で、こう。

<?php
require_once __DIR__.'/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf([
    'mode'         => 'ja',
    'format'       => 'A4',
    'fontdata'     => [
        'ipaexg'  => ['R' => 'ipaexg.ttf'],
        'ipaexm'  => ['R' => 'ipaexm.ttf'],
    ],
    'default_font' => 'ipaexg',
]);

ob_start();
include 'pdf.html';
$htmlInclude = ob_get_clean();

$mpdf->WriteHTML($htmlInclude);
$mpdf->Output();

今回のネタの根幹はここ。

ob_start();
include 'sample.html';
$html = ob_get_clean();

echo $html;

どういうものになるか雑に言えば、これと同じだと思えばいい。

$html = <<<HTML
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    aaaaaaaaaaa
</body>
</html>
HTML;

echo $html;

htmlファイルはローカルで開けるから表示確認が楽だし変数の中身を外に逃がせるのはソースコードがスッキリしていいですね。

ちなみに、フォントの設定はmPDF側でやらなきゃいけないみたい。
mPDFで設定されているフォントがhtmlファイルで指定できる範囲になる。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1 style="font-family: ipaexg;">ゴシック体タイトル</h1>
    <p style="font-family: ipaexm;">これは明朝体の段落です。</p>
</body>
</html>

htmlファイル内でphpスクリプトを使う

実はhtmlファイル上でphpスクリプトを動作させることは可能だったりする。
当然だけどローカルじゃ発火しないんで、最低でもXAMPPとかで仮想環境を立ててください。

変数を渡して表示したいならこうして

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{
            font-size: 30px;
        }
    </style>
</head>
<body>
    <?php echo $sample; ?>
</body>
</html>

こう。

<?php
require_once __DIR__.'/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf([
    'mode'         => 'ja',
    'format'       => 'A4',
    'fontdata'     => [
        'ipaexg'  => ['R' => 'ipaexg.ttf'],
        'ipaexm'  => ['R' => 'ipaexm.ttf'],
    ],
    'default_font' => 'ipaexg',
]);

$sample = "あああああああああ";

ob_start();
include 'pdf.php';    /* ファイルは「.html」だけど「.php」でよみこむ */
$htmlInclude = ob_get_clean();

$mpdf->WriteHTML($htmlInclude);
$mpdf->Output();

「include ‘pdh.html’;」としても動作しちゃうんだけどね。

コメント

タイトルとURLをコピーしました