2010-07-14 26 views
4

dompdf n'est pas en mesure de générer un pdf à partir d'une page de mon site. Cependant, j'ai enregistré la page et l'ai téléchargée en tant que simple fichier html statique, et cela a fonctionné!dompdf: chargement de fichiers html à rendre, ne fonctionne pas

Alors, je ne sais pas si le problème est avec l'URL, ou quelque chose d'autre .. c'est l'erreur que je reçois:

Warning: require_once(/home/o110334/public_html/dompdf/include/firephp.cls.php) [function.require-once]: failed to open stream: No such file or directory in /home/o110334/public_html/dompdf/dompdf_config.inc.php on line 194

Fatal error: require_once() [function.require]: Failed opening required '/home/o110334/public_html/dompdf/include/firephp.cls.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/o110334/public_html/dompdf/dompdf_config.inc.php on line 194

Voici le code:

$file = "admin/store/orders/45/invoice/print"; // doesn't work 
//$file = "invoice_sample2.html"; //it works (same web page, but stored in a html file) 

$dompdf = new DOMPDF(); 
$dompdf->load_html_file($file); 
$dompdf->render(); 
$dompdf->stream("sample.pdf"); 
+0

Utilisez-vous une sorte de cadre? Je demande à cause du chemin du fichier, qui semble être le genre d'URL amicale qui pourrait être utilisée par un framework. Si c'est le cas, la méthode n ° 1 spécifiée par Wrikken est l'option que vous voulez utiliser. DOMPDF suppose un chemin de système de fichiers local sauf si vous spécifiez une URL complète (par exemple, http://example.com/admin/store/orders/45/invoice/print). Le framework ne traitera pas le fichier à moins que vous ne passiez par le serveur Web. – BrianS

Répondre

12

dompdf essaie toutes sortes de choses/de eval lors de l'exécution locale, vous êtes mieux d'essayer:

1) (accordé, long voyage aller simple) de demander le code HTML par http:

$dompdf->load_html_file('http://yourdomain.ext/'.$file); 

2) Ne laissez pas DOMPDF eval mais utilisez la mémoire tampon de sortie elle-même, et laissez DOMPDF charger la chaîne HTML résultante.

<?php 
    ob_start(); 
    //be sure this file exists, and works outside of web context etc.) 
    require("admin/store/orders/45/invoice/print"); 
    $dompdf = new DOMPDF(); 
    $dompdf->load_html(ob_get_clean()); 
    $dompdf->render(); 
?> 
+0

J'ai mis à jour ma question. La même page est correctement rendue si elle est chargée à partir d'un fichier html statique (même localement). – aneuryzm

+1

C'est ce que j'ai dit. J'ai dit de ne pas laisser DOMPDF exécuter votre php. – Wrikken

+1

Méthode 1 codée pour être plus portable $ file = "/ admin/store/orders/45/invoice/print"; $ dompdf-> load_html_file ('http: //'.$_SERVER [' HTTP_HOST '] .dirname ($ _SERVER [' PHP_SELF ']). $ Fichier); – BrianS