PHPでHTMLからPDF生成

mPDFを利用したPDFの生成

mPDFのダウンロード

mPDFから 最新(mPDF v5.7 Full installation)のZipファイル(MPDF57.zip)と 必要に応じて、mPDF v5.7.x Upgrade のZipファイルをダウンロード後、zipを展開。
アップグレードの差分は本体に上書き。

config.php

useAdobeCJKをtrueに変更

$this->useAdobeCJK = true;

PHP

// ライブラリ読み込み require_once('MPDF57/mpdf.php'); // ページ読み込み $contents = file_get_contents('http://example.com'); // 日本語化 ja+aCJK // フォーマット A4は縦、A4-Lは横 // 左マージン 15、右マージン 15、上マージン 16、下マージン 16、ヘッダマージン 9、フッタマージン 9 $mpdf = new mPDF('ja+aCJK', 'A4-L', 0, '', 15, 15, 16, 16, 9, 9); $mpdf->WriteHTML($contents); // PDF表示 $mpdf->Output(); // PDF保存 // $mpdf->Output('create.pdf', 'F'); exit;

mPDF()useAdobeCJKを参考。

通常のサイトをそのまま読み込みPDF化するとCSSが当たっていない状態になるため、外部CSSはhead内に記述する必要がある。 なお、head内に記述しても、PositionやCSS3全般などの一部のCSSが効かない。

フォントの設定

Fonts in mPDF 5.xを参考にフォントの定義を設定。

ttfonts下に使用するフォントファイル(msgothic.ttc)を設置。

config_fonts.php

fontdataにmsgothic.ttcの定義を追加

$this->fontdata = array( 'msgothic' => array( 'R' => 'msgothic.ttc' 'TTCfontID' => array( 'R' => 1 ) ), (略)

config_cp.php

CASE "ja"をsjis,sjisB,sjisI,sjisBからmsgothicへ変更

CASE "ja": if ($adobeCJK) { $unifonts = 'msgothic'; } (略)

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。
主にLAPP環境でPHPを書いています。
最近はjQueryをよく書いています。