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

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

ただいまの
回答率

90.48%

  • PHP

    20834questions

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

[kusanagi][mPDF]gif、pngが表示されない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 436

Hankoya_Joub

score 2

数年間より VPS(CentOS6 Apache PHP5.3.3)にて通販サイト(Wordpress+自作スクリプト)を運営しており 現在kusanagi(CentOS7 Nginx PHP7.2.3)に移行しているところです

現在自作スクリプトのデバッグ中なのですが mPDF(Ver6)が思うように作動せず困っています

 前提・実現したいこと

mPDFで変換したpdfファイルのうち gif、pngの透過ファイルがparseされず表示されません
移行前では表示されているので原因を突き止め表示させるようにしたいです

 発生している問題・エラーメッセージ

mPDFのshowImageErrorsを有効にしてphpを実行すると htmlソースに以下のエラーが表示されます

<B>mPDF error: </B>IMAGE Error (https://www.hoge.com/xxx/yyy/zzz.gif): Error parsing temporary file image object created with GD library to parse GIF image


と出ます

 該当のソースコード

$html = $smarty->fetch("html/html.tpl");

require_once(LIBS_DIR.'mpdf60/mpdf.php');
//日本語フォントのIPAを使用することを宣言
$mpdf = new mPDF('ja','A4','8',"ipa");
$mpdf->showImageErrors = true;
//外部スタイルシートを使用する場合は下記の設定
$stylesheet = file_get_contents("/home/kusanagi/www.hoge.com_html/DocumentRoot/css/style_hoge.css");
$mpdf->WriteHTML($stylesheet,1);
$mpdf->WriteHTML($html);
$pdf = '';
$pdf = $mpdf->Output('','S');


ソースそのものが膨大の為一部だけですが…

smartyを用いてhtmlを文字列にし それをそのままhtmlファイルとしたものと mPDFでpdfに変換したものをphpMailer(JphpMailer)でメール送信しています

 試したこと

■showImageErrorsを無効にして実行
→htmlとpdfがメール送信されます 受信した添付ファイルのうちhtmlにはgifやpngが表示されますが pdfには表示されません そのためsmartyからhtmlを作成するところまでは問題ないことになります

■旧環境(CentOS6 PHP5.3.3)で実行
→htmlとpdfがメール送信され いずれのファイルにもgifやpngが表示されます

■mPDF7の導入検討
→githubに最新版があるようですがphpファイルが見当たらずftpからのインストールができないようなので二の足を踏んでいます(linuxのyumコマンドが精いっぱいでインストール手順解説も少ないようなので…)

■フォルダ等のパーミッションのチェック
→一時ファイルに保存を試みているのでフォルダのパーミッション等も怪しいと思ったのですが そもそもどこに一時ファイルがあるのかもわかりませんでした…
mpdfフォルダ内のパーミッションは移行前 移行後と同じです

■phpinfoでgdの環境を比較

旧環境(php5.3.3)

gd
GD Support    enabled
GD Version    bundled (2.0.34 compatible)
FreeType Support    enabled
FreeType Linkage    with freetype
FreeType Version    2.3.11
GIF Read Support    enabled
GIF Create Support    enabled
JPEG Support    enabled
libJPEG Version    6b
PNG Support    enabled
libPNG Version    1.2.49
WBMP Support    enabled
XPM Support    enabled
XBM Support    enabled

Directive    Local Value    Master Value
gd.jpeg_ignore_warning    0    0

新環境(php7.2.3)

gd
GD Support    enabled
GD Version    bundled (2.1.0 compatible)
FreeType Support    enabled
FreeType Linkage    with freetype
FreeType Version    2.4.11
GIF Read Support    enabled
GIF Create Support    enabled
JPEG Support    enabled
libJPEG Version    6b
PNG Support    enabled
libPNG Version    1.5.13
WBMP Support    enabled
XBM Support    enabled
Directive    Local Value    Master Value
gd.jpeg_ignore_warning    1    1

どちらもpng gifともにenableとなっていまして それ以外の部分に問題があるかどうかは分かっていません

これまでいろいろ考えましたが分からず困っています
何か考えられることがありましたらご教示いただけますでしょうか
よろしくお願い申し上げます

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • okrt

    2018/04/22 00:54

    動かない原因はわかりませんし私は詳しくなくて試してませんが、「Composerを使ってmPDF7をインストールする」「PHP7.2.3ではなくPHP5.xで動かすようにしてみる」「mPDF6.0.0を使っているのであればmPDF6.1.xにしてみる」の3とおり、試せませんか? 勿論、どれか1つで解決できれば全部試す必要はありません。 https://github.com/mpdf/mpdf https://mpdf.github.io/installation-setup/installation-v7-x.html https://github.com/mpdf/mpdf/issues/256 https://github.com/mpdf/mpdf/releases/tag/v6.1.0 https://github.com/mpdf/mpdf/releases/tag/v6.1.4

    キャンセル

  • Hankoya_Joub

    2018/04/22 18:07

    okrt様 ありがとうございます mPDF6.1の存在は知らなかったので取り急ぎそちらを試してみます mPDF7.0もインストールだけはできたみたいですが composerもphp7も初めてなので日本語フォントの導入すら手間取ってる状態で助かりました 解決しだい改めて報告いたします

    キャンセル

回答 1

check解決した方法

0

無事解決いたしました
okrt様のアドバイスでmPDF6.1の存在を知り、ダウンロード&サイトにアップロードして活用したところ、問題なくgif、pngともにpdfで表示されました。

mPDF6.1の存在を知らず、最新版のmPDF7.0に挑戦してたのですが、参考にした日本語フォントの導入方法の理解に時間がかかり断念しました(名前空間とか初めて知りましたよ… 自分のphp知識が浦島太郎状態で勉強不足を痛感しました…)
mPDF6.1は、mPDF6.0と同じ設定で難なくつかえたので助かりました。

知識不足の自分にご丁寧にアドバイスをしていただいたokrt様、ありがとうございました。
また答えにくい質問を投下し、お目汚し大変失礼いたしました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    20834questions

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