web-dev-qa-db-fra.com

mPDF 5.7.1 - l'image s'affiche comme une cassée [x]

J'ai un petit problème avec mPDF (version 5.7.1).

Ce code devrait générer PDF avec fichier image:

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

Et bien il n'y a pas d'image mais un [x] au lieu.

J'ai assez googlé pour arriver à la conclusion que cela doit être fait de cette façon, mais j'ai également essayé realpath vers le fichier. Toujours rien.

La seule chose que je n'ai pas essayée est <img src="logo11w.png"> et en copiant l'image dans le dossier car je ne sais pas dans quel dossier je dois copier le fichier logo11w.png.

Aucune suggestion?

16
Mr.TK

J'ai eu le même problème avec les images PNG affichées en tant que [X] lors de la génération de PDF avec mPDF.

J'ai ajouté: $mpdf->showImageErrors = true;

Après: $mpdf = new Mpdf();

et a obtenu le message d'erreur:

Bibliothèque Gd requise pour l'image PNG (canal alpha) #

Donc, après avoir exécuté apt-get install php5-Gd, Générer un PDF avec un PNG a fonctionné comme un charme!

63
ddn

L'inclusion d'images est un peu délicate dans mPDF. J'ai également eu quelques problèmes. J'ai trouvé plus de problèmes.

Au début, vous devez activer la variable de débogage:

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

Habituellement, les gens n'ont pas installé le module Gd pour PHP. Sur une machine Linux, exécutez:

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

Sur les serveurs Windows, php_Gd2.dll est inclus dans une installation standard PHP, mais n'est pas activé par défaut. Pour l'activer, décommentez l'extension = php_Gd2. dll dans votre fichier php.ini (supprimez le # au début de cette ligne) et redémarrez le = PHP. [ 1 ]

Si vous obtenez cette erreur, vous verrez probablement l'image [x]:

erreur mPDF: Erreur IMAGE ( http://www.domain.com/directory/image.jpg ): Impossible de trouver le fichier image

Vérifiez l'url si votre image existe et si l'image est accessible. Si oui, vous pouvez essayer de changer l'URL absolue en relative. Vous pouvez essayer les deux versions:

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

En fait, j'ai également eu un problème avec les formats PNG. L'image PNG convertie en JPG a bien fonctionné.

La liaison dans les modèles mPDF doit être la même que pour l'ensemble de votre framework/système.

19
pevac

J'ai rencontré le même problème après la migration du script.

Le problème était que le répertoire tmp dans le dossier mpdf n'était pas accessible en écriture. J'espère que ça aide quelqu'un.

9
Dimitri L.

D'accord. Après le dernier commentaire sur la question (14h30). Voici exactement le même code que IS fonctionne avec mPDF 5.4. Et il enregistre sa sortie dans le répertoire des scripts sous le nom test.pdf. Problèmes de pare-feu?

Modifié

J'ai les répertoires/fichiers suivants:

  • images
    • wallpaper01.jpg
    • wallpaper02.jpg
  • index.php (code source)

Donc, ces fichiers image commencent relativement à partir du répertoire de script à quoi il ressemble.

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;
}

exemple entièrement fonctionnel (téléchargement)

1
KoalaBear

Pour moi, cela fonctionne dès maintenant. J'espère que cela aidera quelqu'un.

Solution: Essayez le chemin relatif de l'image au lieu de l'URL. L'image doit être hébergée sur le même serveur.

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

1
Krupal Patel

Vous pouvez essayer ceci:

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

ou

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

après cela, vous devriez faire:

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

en savoir plus à ce sujet dans la documentation: mPDF Load Image

0
Santos L. Victor

Dans mon projet, je résous le problème et la solution est:

Définissez le chemin absolu src sur l'exemple de serveur: src="/var/www/myproject/images/logo.png" si l'image est sur le même serveur. Si l'image provient d'un serveur externe, src est un exemple de chemin absolu: src="https://www.google.bg/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png". J'espère que cela aidera quelqu'un.

0
Sergei Martinov