#HTML から PDF に変換 PHP ライブラリ mPDF の設定

mPDF について
最近 PDF 作る作業があったので、新たに mpdf 確認しました。mpdf 5から長年 mpdf 愛用しておりますが、現在バージョンは8です。公式サイトはまだ v7 のままですが、試したところ使い方は変っていない模様。mpdf は html から pdf に変換するための php ライブラリです。FPDFHTML2FPDFをベースにして、機能強化及び性能アップして作られたそうですです。

mpdf を選ぶ理由
同類のライブラリは複数ありますが、自分が使ってて良かったと思うところ

  • 軽い (他のライブラリよりビルドが速い)
  • 機能性 (改ページ、ヘッダー設定、ダウンロード機能など)
  • ライブラリがわかりやすい (config ファイルやマニュアルが詳しい、わかりやすい、設定が楽)
  • 多言語対応 (日本語、韓国語、中国語、アラビア語など、文字化けなしで多言語対応)

composer install

composer require mpdf/mpdf

packagempdf/mpdf(opens new window)

php に取り込む

<?php

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

$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML('<h1>Hello world!</h1>');
$mpdf->Output();

#日本語対応

当初日本語対応するのに、フォントをダウンロードしていろいろ設定もいじらなくてはならなかったが、バージョン 6 からコンフィグを2行設定するだけで、日本語韓国語中国語が対応できるようになり、非常に便利

config

  • autoScriptToLang
  • autoLangToFont

結論から言うと、デフォルトではfalseになっていますが、trueにするだけで完了

sample

<?php

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

$mpdf = new \Mpdf\Mpdf([
    'autoScriptToLang' => true,
    'autoLangToFont' => true,
]);
$mpdf->WriteHTML('<h1>Hello こんにちは、漢字日本語!</h1>');
$mpdf->Output();

$mpdf->autoScriptToLang = true;
$mpdf->autoLangToFont = true;
でも一緒

#config

#Paging

項目デフォルト備考
mirrorMargins(opens new window)0
forcePortraitMargins(opens new window)falseデフォルトのページ方向が P(縦)の場合、新しいページ L(横)を追加すると、左/右マージンが上/下として使用され、逆も同様
displayDefaultOrientation(opens new window)falseデフォルトのページの向きが P(縦)の場合、ドキュメント内の L(ランドスケープ)ページは Adobe Reader で表示され、縦に表示
autoPageBreak(opens new window)true自動改ページを許可するかどうかを指定
setAutoTopMargin(opens new window)falseドキュメントの上部余白を定義する動作を指定
setAutoBottomMargin(opens new window)false下·部余白を定義
autoMarginPadding(opens new window)2「ストレッチ」モードで、上部マージンとヘッダーの間のパディングを指定
margBuffer(opens new window)2(空の)ブロックの終わりがこの量(mm)だけ下マージンを超えて広がることを許可
printers_info(opens new window)false@page および marks:crop を使用するときに、プリンターの日付とページ情報を追加
bleedMargin(opens new window)5@page メディアで使用されるデフォルトの裁ち落としマージンをミリメートル単位で設定
crossMarkMargin(opens new window)5マージンからの十字マークの距離(mm)
cropMarkMargin(opens new window)8マージンからクロップマークまでの距離(mm)
cropMarkLength(opens new window)18クロップラインの mm 単位のデフォルトの長さ
nonPrintMargin(opens new window)8用紙の端の印刷不可能な境界(mm)
defaultPagebreakType(opens new window)cloneall<改ページ/>を使用して、強制改ページの改ページを入力します。

#Page numbering

項目デフォルト備考
aliasNbPg(opens new window){nb}ドキュメント内の合計ページ番号で置換されるテキストを定義する変数
aliasNbPgGp(opens new window){nbpg}ページグループ内の合計ページ番号で置換されるテキストを定義する変数
pagenumPrefix(opens new window){PAGENO}を使用してヘッダーまたはフッターにページ番号を挿入する場合、ページ番号の前にテキストを指定
pagenumSuffix(opens new window){PAGENO}を使用してヘッダーまたはフッターにページ番号を挿入するときに、ページ番号に続くテキストを指定
nbpgPrefix(opens new window){nbpg}によって生成されたページ合計の前にテキストを指定
nbpgSuffix(opens new window){nbpg}によって生成されたページの合計に従うテキストを指定
defaultPageNumStyle(opens new window)1ドキュメントの最初から使用するデフォルトのページ番号スタイルを指定

#Fonts, Languages and Character sets

項目デフォルト備考
autoScriptToLang(opens new window)false
autoLangToFont(opens new window)false

#Page Headers & Footers

項目デフォルト備考
defaultfooterfontsize8
defaultfooterfontstyleBI
defaultfooterline1
defaultheaderfontsize8
defaultheaderfontstyleBI
defaultheaderline1
footer_line_spacing0.25
header_line_spacing25
forcePortraitHeadersfalse

#参考

mPDF 公式マニュアル(英語)(opens new window)

2019-12-12
  • php

関連記事

twig 3 人気 PHP テンプレートエンジンがバージョンアップ
php curl 使って クリックなしで POST 送信
allowurlinclude の設定で ftp_connect()エラー
Lumen と Laravel 違い比較
Laravel5.7 の MVC 使う時のメモ
php 開発におけるルール・規約
PHP 7.4 にアップグレードして使えなくなる機能
解決!phpMyAdmin テーブル構造の内容が表示されない問題
正規表現一覧 よく使う検索・置換のパターン
開発時によく使うゼロ埋めパディング作業まとめ
知ってるようで知らなかった composer のコマンドとオプションの世界
Laravel 5.1 から 8.1 にバージョンアップ
laravel vuejs 初期設定
nuxtjs と codeigniter で jwt システム構築
爆速・軽量フレームワーク codeigniter PHP 開発
Laravel Error についてのメモ