- 締切済み
mpdfで複数のフォントを使いたい
mpdfを使ってhtmlをPDFに変換していますが、一番に優先されるフォントでしか表示されません。 複数のフォントを使えるようにするにはどうすればよいでしょうか。 ★元となるhtml http://pips.chu.jp/pdf/font2/index.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 14.0.8.0 for Windows"> <title></title> <style type="text/css"> <!-- body{ font-family : IPAPゴシック,IPAP明朝; } --> </style> </head> <body> <font face="IPAPゴシック">この部分はゴシックにしたい(IPAPゴシック)</font> <br><br> <font face="IPAP明朝">この部分は明朝にしたい(IPAP明朝)</font> </body> </html> ★上記のhtmlをPDF変換するためにmpdfのデータを修正 手順1.「ttfonts/」フォルダの中にipagp.ttfファイルとipamp.ttfファイルを置きました。 手順2.「config_fonts.php」の「$this->fontdata()」にてフォントを定義しました。 $this->fontdata = array( "dejavusanscondensed" => array( 'R' => "DejaVuSansCondensed.ttf", 'B' => "DejaVuSansCondensed-Bold.ttf", 'I' => "DejaVuSansCondensed-Oblique.ttf", 'BI' => "DejaVuSansCondensed-BoldOblique.ttf", ), "dejavusans" => array( 'R' => "DejaVuSans.ttf", 'B' => "DejaVuSans-Bold.ttf", 'I' => "DejaVuSans-Oblique.ttf", 'BI' => "DejaVuSans-BoldOblique.ttf", ), ~~ 中略 ~~ "ipag" => array( 'R' => "ipagp.ttf", ), "ipam" => array( 'R' => "ipamp.ttf", ), ); 手順3.「config_fonts.php」の「$this->BMPonly」にもフォントを定義しました。 $this->BMPonly = array( "dejavusanscondensed", "dejavusans", "dejavuserifcondensed", "dejavuserif", "dejavusansmono", "pagp.ttf", "pamp.ttf", ); 手順4.「config_cp.php」の「$unifonts」にてフォントを使いますよ宣言をしました。 CASE "ja": if ($adobeCJK) { $unifonts = "ipagp.ttf,ipamp.ttf,sjis,sjisB,sjisI,sjisBI"; } ★呼び出し元(index.php)は下記の通りです。 <?php require_once('mpdf.php'); $html = file_get_contents("http://pips.chu.jp/pdf/font2/index.html"); $mpdf = new mPDF('ja','A4'); $mpdf->WriteHTML($html); $mpdf->Output(); ?> ★結果的には、手順4の $unifonts = "ipagp.ttf,ipamp.ttf,sjis,sjisB,sjisI,sjisBI";の部分の先頭に置いたフォントのみが使用されます。 上記の場合はipagp.ttfを先頭においたので、ファイル全てがipagp.ttf(ゴシック)で表示されます。 ↓ http://pips.chu.jp/pdf/font2/mpdf/index.php ※ちなみにipamp.ttfを先頭に置いてみると、ipamp.ttf(明朝)で表示されました。 ★最終的に、ひとつのhtmlの中に明朝系とゴシック系を混在させてデザインしたいと思っております。 htmlまたはmpdfの設定で間違っているところがありましたらご指摘頂きたいです。 何卒よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- memphis
- ベストアンサー率40% (975/2395)
使用するフォントのパラメーラを省略しているので、登録したフォントの1番目が使われます。 mpdfのドキュメントをよく見ましょう。
お礼
memphis 様 ご回答ありがとうございました。 プログラミングに関して勉強を始めたばかりで、どの部分のパラメータが省略されているのかがわかりません。 いろいろ試してみました。例えば ★mpdf/index.php <?php require_once('mpdf.php'); $html = file_get_contents("http://pips.chu.jp/pdf/font3/index.html"); $mpdf = new mPDF('ja','A4'); $mpdf->SetFont('ipamp.ttf') $mpdf->SetFont('ipagp.ttf') $mpdf->WriteHTML($html); $mpdf->Output(); ?> が、効果はありませんでした。 せっかくのアドバイスを生かしきれず申し訳ありません。 もし、他にヒントになることがありましたら何卒ご教授ください。