Bonjour,

Dompdf version 2-0-3

Testé avec php 7.1+ et 8.1.12

J'ai toujours ce message "Image not found or type unknown" lorsque j'essaie d'intégrer des photos pour le rendu avec dompdf. Après recherche sur le web j'ai essayé différentes solutions, notamment avec les options "isRemoteEnabled" et/ou "HttpContext" mais rien n'y fait. Cela ne fonctionne pas plus sur Wamp que sur un serveur distant avec https :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use Dompdf\Dompdf;
use Dompdf\Options;
require_once 'dompdf/autoload.inc.php';
 
//... $html='ma chaine html avec doctype etc.';
 
$contxt = stream_context_create([ 
    'ssl' => [ 
        'verify_peer' => false, 
        'verify_peer_name' => false,
        'allow_self_signed'=> true
    ] 
]);
 
$options = new Options();
$options->set('isRemoteEnabled',true);
$options->set('HttpContext',$contxt);
 
$dompdf = new Dompdf($options);
$dompdf->loadHtml($html);
$dompdf->set_paper('a4', 'portrait');
$dompdf->render();
$dompdf->stream('test', array("Attachment" => false));
Bien entendu j'ai essayé au départ sans options.

La seule solution que j'ai trouvée est d'encoder mes images avec base64_encode, mais ce n'est pas pratique même si c'est faisable en traitant le DOM préalablement avec DOMDocument pour automatiser le système. Si quelqu'un avait une solution plus simple. Je ne sais pas pourquoi cela ne fonctionne pas correctement. Si quelqu'un a déjà rencontrer ce problème et a une solution, cela me dépannerait.

EDIT
: Bon j'ai trouvé, il faut en fait renseigner l'option chroot en indiquant dans un tableau tous les dossiers nécessaires à la création du pdf, que ce soit les images ou les feuilles de styles. Par exemple ma feuille de style est dans le dossier "Librairie" et j'ai des photos dans les dossiers "PICS" et "PHOTOS" :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
use Dompdf\Dompdf;
use Dompdf\Options;
require_once 'dompdf/autoload.inc.php';
//...
$options = new Options();
$options->set('chroot', [__DIR__.'/Librairie', __DIR__.'/PICS', __DIR__.'/PHOTOS']);
$dompdf = new Dompdf($options);
//...