web-dev-qa-db-ja.com

mPDF 5.7.1-画像が壊れて表示される[x]

MPDF(バージョン5.7.1)に小さな問題があります。

このコードは、画像ファイルでPDFを生成する必要があります。

 $mpdf = new mPDF();
 $html = '<img src="https://www.google.pl/images/srpr/logo11w.png"/>';
 $mpdf->WriteHTML($html);
 $mpdf->debug = true; 
 $output = $mpdf->Output(); 
 exit();

画像はありませんが、[x]代わりに。

この方法で行う必要があるという結論に達するまでグーグルで調べましたが、ファイルへのリアルパスも試しました。まだ何もありません。

試したことがないのは<img src="logo11w.png">そして、どのフォルダにファイルをコピーすべきかわからないため、画像をフォルダにコピーしますlogo11w.png

助言がありますか?

16
Mr.TK

MPDFでPDFを生成するときにPNG画像が[X]として表示されるという同じ問題がありました。

追加しました:_$mpdf->showImageErrors = true;_

後:$mpdf = new Mpdf();

エラーメッセージが表示されました:

PNG画像(アルファチャネル)に必要なGdライブラリ#

したがって、_apt-get install php5-Gd_を実行した後、PNGでPDFを生成すると、チャームのように機能しました!

63
ddn

画像を含めることは、mPDFではややトリッキーです。私にもいくつかの問題がありました。より多くの種類の問題が見つかりました。

最初に、デバッグ変数をオンにする必要があります。

$mpdf = new mPDF();    
$mpdf->showImageErrors = true;

通常、PHP用のGdモジュールはインストールされていません。 Linuxマシンで、次を実行します。

Sudo apt-get install php5-Gd
Sudo service Apache2 restart

Windowsサーバーでは、php_Gd2.dllは標準のPHPインストールに含まれていますが、デフォルトでは有効になっていません。有効にするには、extension = php_Gd2.dllphp.iniファイルの行(その行の先頭から#を削除)とPHP拡張機能を再起動します。[ 1 ]

このエラーが発生した場合、おそらく[x]画像が表示されます。

mPDFエラー:IMAGEエラー( http://www.domain.com/directory/image.jpg ):画像ファイルが見つかりませんでした

画像が存在し、画像にアクセスできる場合は、URLを確認してください。はいの場合は、絶対URLを相対URLに変更してみてください。両方のバージョンを試すことができます:

<img src="directory/image.jpg">
<img src="./directory/image.jpg">

実際、PNG形式にも問題がありました。 PNG画像をJPGに変換すると正常に機能しました。

MPDFテンプレートでのリンクは、フレームワーク/システム全体と同じである必要があります。

19
pevac

スクリプトを移行した後、同じ問題が発生しました。

問題は、mpdfフォルダー内のtmpディレクトリーが書き込み可能でないことでした。私はそれが誰かを助けることを願っています。

9
Dimitri L.

OK。質問に関する最後のコメントの後(14:30)。ここで、IS mPDF 5.4で動作するまったく同じコード。そして、test.pdfとしてスクリプトディレクトリに出力を保存します。ファイアウォールの問題?

編集済み

次のディレクトリ/ファイルがあります。

  • 画像
    • wallpaper01.jpg
    • wallpaper02.jpg
  • index.php(ソースコード)

そのため、これらの画像ファイルは、スクリプトディレクトリから比較的似ているように見えます。

require_once __DIR__ . DIRECTORY_SEPARATOR . 'MPDF/mpdf.php';

try {
    $mpdf = new mPDF(); 
    $mpdf->WriteHTML('<img src="images/wallpaper01.jpg" alt="" width="480">');
    $mpdf->WriteHTML('<img src="images/wallpaper02.jpg" alt="" width="480">');
    $mpdf->Output(__DIR__ . DIRECTORY_SEPARATOR . 'test.pdf', 'F');
} catch(Exception $e) {
    echo $e;
}

完全に動作する例(ダウンロード)

1
KoalaBear

私にとっては、今のところ機能しています。これが誰かを助けることを願っています。

解決策:URLではなく画像の相対パスを試してください。画像は同じサーバーでホストする必要があります。

例:/var/www/mysite/image/xyz.jpg

1
Krupal Patel

これを試すことができます:

$mpdf->imageVars['myvariable'] = file_get_contents('alpha.png');

または

$html = '<img src="var:myvariable"/>';
$mpdf->WriteHTML($html);

その後、次のことを行う必要があります。

$mpdf->Image('var:myvariable', 0, 0);

詳細については、ドキュメントをご覧ください: mPDF Load Image

0

私のプロジェクトで私は問題を解決し、解決策は次のとおりです。

サーバーの例にsrc絶対パスを設定します。src="/var/www/myproject/images/logo.png"イメージが同じサーバー上にある場合。画像が外部サーバーからのものである場合、srcは絶対パスの例です:src="https://www.google.bg/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"。これが誰かを助けることを願っています。

0
Sergei Martinov