質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

5145閲覧

Laravel環境での日本語PDF作成でエラーが出る。

sugihiro1

総合スコア19

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/11/14 09:20

編集2020/11/14 09:47

Laravel環境で日本語PDF作成をトライしています。Laravel環境で日本語のPDFを作成する方法 を参考に「laravel-dompdf」を使い作成しました。英文のPDF表示はできましたが、日本語表示をさせようとすると "Undefined offset: 12239" というエラーになってしまいます。

関連コードは以下です。

web.php

Route::get('/pdf','PDFController@index');

PDFController.php

class PDFController extends Controller { public function index(){   $pdf = PDF::loadView('hello');   return $pdf->stream('hello.pdf'); } }

hello.blade.php

<!doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>PDF</title> <style> @font-face{ font-family: ipag; font-style: normal; font-weight: normal; src:url('{{ storage_path('fonts/ipag.ttf')}}'); } body { font-family: ipag; } </style> </head> <body> <div>    <p>Hello!</p> <p>こんにちは</p> </div> </body> </html>

ここで、src:url('{{ storage_path('fonts/ipag.ttf')}}'); 部分をコメントアウトすると、以下のとおり英文部分のみ正しくPDF表示されます。
イメージ説明

src:url('{{ storage_path('fonts/ipag.ttf')}}'); 部分を有効にすると以下のエラー画面となります。
イメージ説明

"Undefined offset: 12239" というエラーは何か、ならびにエラーを解消する方法をアドバイスいただきたく存じます。

動作環境は以下です。
Windows 10
PHP 7.2.6
Laravel V5.5.50 (v5.5で作成されたシステムにPDF出力機能を追加したい為)
barryvdh/laravel-dompdf v0.8.7
IPAexfont00401.zip をダウンロード・解凍し、ipaexg.ttfファイルをstorage/fontsフォルダを作成し設置、ファイル名をipag.ttfに変更

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

全く同じ原因で悩んでいたのですが、フォントファイル自体、もしくはフォントファイルとlaravel-dompdfとの相性のようです。

IPAフォント派生のMigMixフォントに変更することで解消されました。

http://mix-mplus-ipa.osdn.jp/migmix/

投稿2020/11/24 06:56

KazTanaka

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KazTanaka

2020/11/24 07:27

補足です。 おそらく12239 - 258 文字目 の文字名が取得出来ない ($glyphNameIndex の要素数と、$data["numberOfGlyphs"]の要素数が異なっていて、存在しない配列のindexを取得しようとして) エラーとなっているのかと思われます。
kai0310

2020/11/25 17:53

リンクを提示する際はMarkdownを使用してください。
sugihiro1

2020/11/29 06:03 編集

回答ありがとうございました。 いただいた情報をもとに、トライした結果、migmix, migu-1p等では、行間が広くなってしまうので、migu-1mを使用し解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問